Contract 0xa68466208f1a3eb21650320d2520ee8eba5ba623 2

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x4ef47838aa4ae3d1e818970ea590b8d68c3c324496d93eb3a83cd72253d9ebb1Approve127612952024-02-27 22:25:562 days 12 hrs ago0x5cc5a8ed6793a595404d5c53cfc5f82cf9fc401e IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.461049147 10,001.5
0x00a18e33e4ffa014e9f71c93acc70df095b241f33d9793655f8304fa77465442Approve127602322024-02-27 20:47:402 days 14 hrs ago0xc38faba6e02808a05e2241935d76acc8429957e5 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x32389bb0948999aebee332ff614b003ca3ebab66c066a530e961e5d2ca1c8d61Approve127601832024-02-27 20:43:072 days 14 hrs ago0x92b270933c1a45493bef00a6c1700f01c102672f IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x93bcde0ea964daa348801da5d18c7e439f0d6575c65eb22ec8626df2ea11d776Approve127154702024-02-24 23:46:175 days 11 hrs ago0xed7af788ce90775b9a333cdcc6b53e163cfa8747 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x6a67fa4301e5a943b5b95ee7dafae383956395067350823bc7ff57ec78afa51dApprove126352912024-02-19 18:15:5110 days 17 hrs ago0xc436241b1dd854421c54e5bd2911ca5cfddcca25 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.46860177 10,097
0x4a36ee2a6096f17425c21e570aa481881114a8f4c1f0d273ae621f14b84023f5Approve125866362024-02-16 14:13:2813 days 21 hrs ago0xaf5ea4e55cabbb16e00b33464f5cff266179ced8 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.24608520
0xe16433e8062008c73f2cdebb6692f5152b5ad907fad00414d5c27bd6e029586aApprove125685102024-02-15 9:53:1415 days 1 hr ago0x9f1e7405c1052d5e05f0a5edb04bb1ec5ec5541e IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x836d48f03143e6a017031405d27d7549eb5bc4d2ec1c0f797d78e92f841d629bApprove125680132024-02-15 9:06:3415 days 2 hrs ago0x514b4bc08fabc57d50f8f0ebac8fde17ac558300 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x86461921714ed66d4cfef5120dbd060abe9d3f448dfe79c642d62576a6dbb5d7Approve125578172024-02-14 17:10:2115 days 18 hrs ago0x2e3338756ca0c68db5c893030fb8105dc1dbf1f4 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0xcc892f0179e3485c680d4f109eb22ead756cd3443e659708df7b056a9a184d8cApprove125570262024-02-14 15:56:0815 days 19 hrs ago0x2126ed9c468bd3682dfa088f5499da02cc7064d1 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0xa1e9f6b47b0b519231561d30d7f25e9792a167055ad40f0c3057866aebb6b37aApprove125567022024-02-14 15:25:4215 days 19 hrs ago0x1d4497c5d46affcc0dea6c03fcda6d0e66da2ef5 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.464216025 10,002.5
0x3af0cba811bd72a5baf52a076c3c9a5a154713d87158bed4f5a21c94953e0f78Approve125323072024-02-13 1:17:4017 days 10 hrs ago0xe9847a029639dcca8258af36671cf635fca32bdc IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x360cfd2423e48ae9d55a1186fb32b24c3452c9eebf31e1ceb9c8f95ad71e9511Approve125322832024-02-13 1:15:2417 days 10 hrs ago0xe9847a029639dcca8258af36671cf635fca32bdc IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0xfd2aece7154b1445f3c422d7b78baa73dd934d57c24213c0b18a943d404f9e7fApprove125321812024-02-13 1:05:5117 days 10 hrs agoCronos ID Name haros.cro IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0xca9128df5dcd9a82b85651dfbd51abffe79ef2e9ba52a01b47ab7f63986a31ebApprove124840572024-02-09 21:53:5220 days 13 hrs ago0x0269002d8f3ae5bbade76f0d8943974d5b47c4b5 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x923c8e62376d5c555adfe0fd16c06c56ddb99ed4e21d79feedae3409a33b52d9Approve124687142024-02-08 21:55:1721 days 13 hrs ago0x8501c3ecdf0f00a17f211dbd867bf80b3df61f34 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x15a3234d45c30f2ea3bfeede0b61900a84e24912053d02954df8db60b15d68d9Approve124678112024-02-08 20:30:4121 days 14 hrs ago0x6aa93c49c4529a93a4edc9694ceaf0a10fdf4cc1 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x829156c928e036c8c336fb28dd20476cdd4b0bd4bd2df6f40fe792ea91ad0067Approve124285332024-02-06 7:09:2124 days 4 hrs ago0x0ea7c5f12f72d8a7d92cdf2d8a838a7ab8664588 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x20698e57020ce9e8fcaf4896d8468b94ca9dc1d36455c61bbbc07ea5e82eca06Approve124221002024-02-05 21:06:4224 days 14 hrs ago0x59a894ae0beab7d20f9823ac1a7aa96d939b5d35 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.243420591867 10,089.5545
0x9fd06ca1f78cfdcb89d58fe769bab5b1ff4d07416493ff4225721a821852eb13Approve124046532024-02-04 17:51:1725 days 17 hrs ago0x3306aa137ad750134cb19e10f36824c7b4ba00e4 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x213389516e0500ccddf1ebba9f0bb826ae437ad7dff669c115a39da36dc6ef71Approve123911592024-02-03 20:47:5526 days 14 hrs ago0x79b997b6f3f53bdd8bd5967fcdb8b053f1a2eb99 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.24608520
0x5c753c699edcae294907e3de191ae1dd25674390d1dda99a3a44dab67ecfb4caApprove123827742024-02-03 7:42:2427 days 3 hrs ago0x3f7949bb2805c2d797b6290bb419e5f43f5c628a IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.2677510
0xc2a7633b53243a2bbfc9e5d407fd9573d8177777e8d7b5c4383e60d63c5b1700Approve123827692024-02-03 7:41:5627 days 3 hrs ago0x3f7949bb2805c2d797b6290bb419e5f43f5c628a IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0x9da0e36ab8531e1b84a0183725c3f78b4d90b2f1bdb623e95e0e73d5f0831c02Approve123709632024-02-02 13:16:2227 days 22 hrs ago0x8fa8517a092f52143b0b1ff393e1cfbad303e5c3 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.4687410
0xfd93a3b74032650204f354d167c4d7399e97a9f159452015eeb403127ef76195Approve123621482024-02-01 23:30:3828 days 11 hrs ago0x347067210b3576e6a2e4f8a229f1c4fea1de05a7 IN  0xa68466208f1a3eb21650320d2520ee8eba5ba6230 CRO0.24608520
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xc2d14b4e4bab8c7b8ddafa4f03c9d643433f6f9604f925e3b8b4cbb2bf118a214466732021-12-07 3:34:46815 days 7 hrs ago MM Finance: Factory  Contract Creation0 CRO
[ Download CSV Export 
Index Block
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xeb0d444bf246a6c32bb34e7fc683fa09626efeb7
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
MeerkatPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-01-14
*/

// File contracts/interfaces/IMeerkatFactory.sol

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function INIT_CODE_HASH() external pure returns (bytes32);

    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 setSwapFee(address pair, uint32 swapFee) external;
}


// File contracts/interfaces/IMeerkatPair.sol

pragma solidity >=0.5.0;

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

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

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

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

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

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

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

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

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


// File contracts/interfaces/IMeerkatERC20.sol

pragma solidity >=0.5.0;

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

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

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

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

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


// File contracts/libraries/SafeMath.sol

pragma solidity =0.5.16;

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

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

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

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


// File contracts/MeerkatERC20.sol

pragma solidity =0.5.16;


contract MeerkatERC20 is IMeerkatERC20 {
    using SafeMath for uint;

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


// File contracts/libraries/Math.sol

pragma solidity =0.5.16;

// 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/libraries/UQ112x112.sol

pragma solidity =0.5.16;

// 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/interfaces/IERC20.sol

pragma solidity >=0.5.0;

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

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

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


// File contracts/interfaces/IMeerkatCallee.sol

pragma solidity >=0.5.0;

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


// File contracts/MeerkatPair.sol

pragma solidity =0.5.16;







contract MeerkatPair is IMeerkatPair, MeerkatERC20 {
    using SafeMath  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
    uint32 public swapFee = 17; // uses 0.17% default

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'Meerkat: 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))), 'Meerkat: 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, 'Meerkat: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    function setSwapFee(uint32 _swapFee) external {
        require(_swapFee > 0, "MeerkatPair: lower then 0");
        require(msg.sender == factory, 'MeerkatPair: FORBIDDEN');
        require(_swapFee <= 1000, 'MeerkatPair: FORBIDDEN_FEE');
        swapFee = _swapFee;
    }

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

    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IMeerkatFactory(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(2);
                    uint denominator = rootK.mul(3).add(rootKLast.mul(2));
                    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 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(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, 'Meerkat: 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 = IERC20(_token0).balanceOf(address(this));
        uint balance1 = IERC20(_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, 'Meerkat: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_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, 'Meerkat: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Meerkat: 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, 'Meerkat: 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) IMeerkatCallee(to).MeerkatCall(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_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, 'Meerkat: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint _swapFee = swapFee;
        uint balance0Adjusted = (balance0.mul(10000).sub(amount0In.mul(_swapFee)));
        uint balance1Adjusted = (balance1.mul(10000).sub(amount1In.mul(_swapFee)));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'Meerkat: 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, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract ABI

[{"inputs":[],"payable":false,"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"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_swapFee","type":"uint32"}],"name":"setSwapFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636a62784211610104578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610583578063d6d788c3146105d4578063dd62ed3e146105f7578063fff6cae914610625576101cf565b8063ba9a7a5614610545578063bc25cf771461054d578063c45a015514610573578063d21220a71461057b576101cf565b80637ecebe00116100de5780637ecebe00146104ac57806389afcb44146104d257806395d89b4114610511578063a9059cbb14610519576101cf565b80636a6278421461045857806370a082311461047e5780637464fc3d146104a4576101cf565b806330adf81f11610171578063485cc9551161014b578063485cc955146103f957806354cf2aeb146104275780635909c0d5146104485780635a3d549314610450576101cf565b806330adf81f146103cb578063313ce567146103d35780633644e515146103f1576101cf565b8063095ea7b3116101ad578063095ea7b3146103175780630dfe16811461035757806318160ddd1461037b57806323b872dd14610395576101cf565b8063022c0d9f146101d457806306fdde03146102625780630902f1ac146102df575b600080fd5b610260600480360360808110156101ea57600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184600183028401116401000000008311171561025557600080fd5b50909250905061062d565b005b61026a610b84565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a457818101518382015260200161028c565b50505050905090810190601f1680156102d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e7610bab565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103436004803603604081101561032d57600080fd5b506001600160a01b038135169060200135610bd5565b604080519115158252519081900360200190f35b61035f610bec565b604080516001600160a01b039092168252519081900360200190f35b610383610bfb565b60408051918252519081900360200190f35b610343600480360360608110156103ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610c01565b610383610c9b565b6103db610cbf565b6040805160ff9092168252519081900360200190f35b610383610cc4565b6102606004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610cca565b61042f610d4c565b6040805163ffffffff9092168252519081900360200190f35b610383610d58565b610383610d5e565b6103836004803603602081101561046e57600080fd5b50356001600160a01b0316610d64565b6103836004803603602081101561049457600080fd5b50356001600160a01b0316611062565b610383611074565b610383600480360360208110156104c257600080fd5b50356001600160a01b031661107a565b6104f8600480360360208110156104e857600080fd5b50356001600160a01b031661108c565b6040805192835260208301919091528051918290030190f35b61026a611430565b6103436004803603604081101561052f57600080fd5b506001600160a01b038135169060200135611456565b610383611463565b6102606004803603602081101561056357600080fd5b50356001600160a01b0316611469565b61035f6115d2565b61035f6115e1565b610260600480360360e081101561059957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115f0565b610260600480360360208110156105ea57600080fd5b503563ffffffff166117f0565b6103836004803603604081101561060d57600080fd5b506001600160a01b038135811691602001351661191c565b610260611939565b600d54600114610676576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d55841515806106895750600084115b6106c45760405162461bcd60e51b81526004018080602001828103825260238152602001806123cb6023913960400191505060405180910390fd5b6000806106cf610bab565b5091509150816001600160701b0316871080156106f45750806001600160701b031686105b610745576040805162461bcd60e51b815260206004820152601f60248201527f4d6565726b61743a20494e53554646494349454e545f4c495155494449545900604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107835750806001600160a01b0316896001600160a01b031614155b6107ca576040805162461bcd60e51b81526020600482015260136024820152724d6565726b61743a20494e56414c49445f544f60681b604482015290519081900360640190fd5b8a156107db576107db828a8d611a99565b89156107ec576107ec818a8c611a99565b86156108a757886001600160a01b03166321d8d577338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561088e57600080fd5b505af11580156108a2573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108ed57600080fd5b505afa158015610901573d6000803e3d6000fd5b505050506040513d602081101561091757600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561096357600080fd5b505afa158015610977573d6000803e3d6000fd5b505050506040513d602081101561098d57600080fd5b5051925060009150506001600160701b0385168a900383116109b05760006109bf565b89856001600160701b03160383035b9050600089856001600160701b03160383116109dc5760006109eb565b89856001600160701b03160383035b905060008211806109fc5750600081115b610a375760405162461bcd60e51b81526004018080602001828103825260228152602001806123836022913960400191505060405180910390fd5b600c5463ffffffff90811690600090610a7690610a589086908590611c3316565b610a6a8861271063ffffffff611c3316565b9063ffffffff611c9616565b90506000610a8d610a58858563ffffffff611c3316565b9050610abf6305f5e100610ab36001600160701b038c8116908c1663ffffffff611c3316565b9063ffffffff611c3316565b610acf838363ffffffff611c3316565b1015610b0f576040805162461bcd60e51b815260206004820152600a6024820152694d6565726b61743a204b60b01b604482015290519081900360640190fd5b505050610b1e84848888611ce6565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600b81526020016a4d6565726b6174204c507360a81b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610be2338484611ea9565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c86576001600160a01b0384166000908152600260209081526040808320338452909152902054610c61908363ffffffff611c9616565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c91848484611f0b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610d1e576040805162461bcd60e51b815260206004820152601260248201527126b2b2b935b0ba1d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b600c5463ffffffff1681565b60095481565b600a5481565b6000600d54600114610daf576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d81905580610dbf610bab565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610e1357600080fd5b505afa158015610e27573d6000803e3d6000fd5b505050506040513d6020811015610e3d57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d6020811015610eba57600080fd5b505190506000610ed9836001600160701b03871663ffffffff611c9616565b90506000610ef6836001600160701b03871663ffffffff611c9616565b90506000610f048787611fc5565b60005490915080610f4157610f2d6103e8610a6a610f28878763ffffffff611c3316565b612138565b9850610f3c60006103e861218a565b610f90565b610f8d6001600160701b038916610f5e868463ffffffff611c3316565b81610f6557fe5b046001600160701b038916610f80868563ffffffff611c3316565b81610f8757fe5b04612220565b98505b60008911610fcf5760405162461bcd60e51b81526004018080602001828103825260268152602001806123a56026913960400191505060405180910390fd5b610fd98a8a61218a565b610fe586868a8a611ce6565b811561101557600854611011906001600160701b0380821691600160701b90041663ffffffff611c3316565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600d546001146110d8576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d819055806110e8610bab565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561114457600080fd5b505afa158015611158573d6000803e3d6000fd5b505050506040513d602081101561116e57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156111bc57600080fd5b505afa1580156111d0573d6000803e3d6000fd5b505050506040513d60208110156111e657600080fd5b5051306000908152600160205260408120549192506112058888611fc5565b6000549091508061121c848763ffffffff611c3316565b8161122357fe5b049a5080611237848663ffffffff611c3316565b8161123e57fe5b04995060008b118015611251575060008a115b61128c5760405162461bcd60e51b815260040180806020018281038252602681526020018061235d6026913960400191505060405180910390fd5b6112963084612238565b6112a1878d8d611a99565b6112ac868d8c611a99565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561136857600080fd5b505afa15801561137c573d6000803e3d6000fd5b505050506040513d602081101561139257600080fd5b505193506113a285858b8b611ce6565b81156113d2576008546113ce906001600160701b0380821691600160701b90041663ffffffff611c3316565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600d81905550915091565b6040518060400160405280600a81526020016904d4545524b41542d4c560b41b81525081565b6000610be2338484611f0b565b6103e881565b600d546001146114b2576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611561928592879261155c926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561152457600080fd5b505afa158015611538573d6000803e3d6000fd5b505050506040513d602081101561154e57600080fd5b50519063ffffffff611c9616565b611a99565b600854604080516370a0823160e01b815230600482015290516115c8928492879261155c92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561152457600080fd5b50506001600d5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611638576040805162461bcd60e51b815260206004820152601060248201526f1359595c9ad85d0e881156141254915160821b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611753573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117895750886001600160a01b0316816001600160a01b0316145b6117da576040805162461bcd60e51b815260206004820152601a60248201527f4d6565726b61743a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b6117e5898989611ea9565b505050505050505050565b60008163ffffffff161161184b576040805162461bcd60e51b815260206004820152601960248201527f4d6565726b6174506169723a206c6f776572207468656e203000000000000000604482015290519081900360640190fd5b6005546001600160a01b031633146118a3576040805162461bcd60e51b815260206004820152601660248201527526b2b2b935b0ba2830b4b91d102327a92124a22222a760511b604482015290519081900360640190fd5b6103e88163ffffffff161115611900576040805162461bcd60e51b815260206004820152601a60248201527f4d6565726b6174506169723a20464f5242494444454e5f464545000000000000604482015290519081900360640190fd5b600c805463ffffffff191663ffffffff92909216919091179055565b600260209081526000928352604080842090915290825290205481565b600d54600114611982576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d55600654604080516370a0823160e01b81523060048201529051611a92926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d60208110156119fd57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611a4a57600080fd5b505afa158015611a5e573d6000803e3d6000fd5b505050506040513d6020811015611a7457600080fd5b50516008546001600160701b0380821691600160701b900416611ce6565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611b465780518252601f199092019160209182019101611b27565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ba8576040519150601f19603f3d011682016040523d82523d6000602084013e611bad565b606091505b5091509150818015611bdb575080511580611bdb5750808060200190516020811015611bd857600080fd5b50515b611c2c576040805162461bcd60e51b815260206004820152601860248201527f4d6565726b61743a205452414e534645525f4641494c45440000000000000000604482015290519081900360640190fd5b5050505050565b6000811580611c4e57505080820282828281611c4b57fe5b04145b610be6576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610be6576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611d0457506001600160701b038311155b611d49576040805162461bcd60e51b81526020600482015260116024820152704d6565726b61743a204f564552464c4f5760781b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d7957506001600160701b03841615155b8015611d8d57506001600160701b03831615155b15611dfe578063ffffffff16611dbb85611da6866122d6565b6001600160e01b03169063ffffffff6122e816565b600980546001600160e01b03929092169290920201905563ffffffff8116611de684611da6876122d6565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611f34908263ffffffff611c9616565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611f69908263ffffffff61230d16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561201657600080fd5b505afa15801561202a573d6000803e3d6000fd5b505050506040513d602081101561204057600080fd5b5051600b546001600160a01b03821615801594509192509061212457801561211f576000612083610f286001600160701b0388811690881663ffffffff611c3316565b9050600061209083612138565b90508082111561211c5760006120c36002610ab36120b4868663ffffffff611c9616565b6000549063ffffffff611c3316565b905060006120f86120db84600263ffffffff611c3316565b6120ec86600363ffffffff611c3316565b9063ffffffff61230d16565b9050600081838161210557fe5b049050801561211857612118878261218a565b5050505b50505b612130565b8015612130576000600b555b505092915050565b6000600382111561217b575080600160028204015b818110156121755780915060028182858161216457fe5b04018161216d57fe5b04905061214d565b50612185565b8115612185575060015b919050565b60005461219d908263ffffffff61230d16565b60009081556001600160a01b0383168152600160205260409020546121c8908263ffffffff61230d16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061222f5781612231565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612261908263ffffffff611c9616565b6001600160a01b0383166000908152600160205260408120919091555461228e908263ffffffff611c9616565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161230557fe5b049392505050565b80820182811015610be6576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe4d6565726b61743a20494e53554646494349454e545f4c49515549444954595f4255524e45444d6565726b61743a20494e53554646494349454e545f494e5055545f414d4f554e544d6565726b61743a20494e53554646494349454e545f4c49515549444954595f4d494e5445444d6565726b61743a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a723158203e4cdfe4a2c857b347361b3b60b3595e9cdcb946c7e9d11407d818baebb9802364736f6c63430005100032

Deployed ByteCode Sourcemap

11321:9980:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11321:9980:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18778:1930;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18778:1930:0;;;;;;;;-1:-1:-1;;;;;18778:1930:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18778:1930:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18778:1930:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;18778:1930:0;;-1:-1:-1;18778:1930:0;-1:-1:-1;18778:1930:0;:::i;:::-;;5484:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5484:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12389:231;;;:::i;:::-;;;;-1:-1:-1;;;;;12389:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7536:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7536:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11625:21;;;:::i;:::-;;;;-1:-1:-1;;;;;11625:21:0;;;;;;;;;;;;;;5627:24;;;:::i;:::-;;;;;;;;;;;;;;;;7838:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7838:301:0;;;;;;;;;;;;;;;;;:::i;5919:108::-;;;:::i;5585:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5776:31;;;:::i;13447:208::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13447:208:0;;;;;;;;;;:::i;12158:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11976:32;;;:::i;12015:::-;;;:::i;15852:1238::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15852:1238:0;-1:-1:-1;;;;;15852:1238:0;;:::i;5658:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5658:41:0;-1:-1:-1;;;;;5658:41:0;;:::i;12054:17::-;;;:::i;6034:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6034:38:0;-1:-1:-1;;;;;6034:38:0;;:::i;17202:1464::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17202:1464:0;-1:-1:-1;;;;;17202:1464:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5534:44;;;:::i;7691:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7691:139:0;;;;;;;;:::i;11446:46::-;;;:::i;20757:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20757:334:0;-1:-1:-1;;;;;20757:334:0;;:::i;11596:22::-;;;:::i;11653:21::-;;;:::i;8147:670::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8147:670:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13663:277::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13663:277:0;;;;:::i;5706:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5706:61:0;;;;;;;;;;:::i;21140:158::-;;;:::i;18778:1930::-;12282:8;;12294:1;12282:13;12274:41;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;;;;12337:1;12326:8;:12;18892:14;;;;:32;;;18923:1;18910:10;:14;18892:32;18884:80;;;;-1:-1:-1;;;18884:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18976:17;18995;19017:13;:11;:13::i;:::-;18975:55;;;;;19077:9;-1:-1:-1;;;;;19064:22:0;:10;:22;:48;;;;;19103:9;-1:-1:-1;;;;;19090:22:0;:10;:22;19064:48;19056:92;;;;;-1:-1:-1;;;19056:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19293:6;;19328;;19161:13;;;;-1:-1:-1;;;;;19293:6:0;;;;19328;;;;19353:13;;;;;;;:30;;;19376:7;-1:-1:-1;;;;;19370:13:0;:2;-1:-1:-1;;;;;19370:13:0;;;19353:30;19345:62;;;;;-1:-1:-1;;;19345:62:0;;;;;;;;;;;;-1:-1:-1;;;19345:62:0;;;;;;;;;;;;;;;19422:14;;19418:58;;19438:38;19452:7;19461:2;19465:10;19438:13;:38::i;:::-;19525:14;;19521:58;;19541:38;19555:7;19564:2;19568:10;19541:13;:38::i;:::-;19628:15;;19624:93;;19660:2;-1:-1:-1;;;;;19645:30:0;;19676:10;19688;19700;19712:4;;19645:72;;;;;;;;;;;;;-1:-1:-1;;;;;19645:72:0;-1:-1:-1;;;;;19645:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19645:72:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19645:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19645:72:0;;;;19624:93;19739:40;;;-1:-1:-1;;;19739:40:0;;19773:4;19739:40;;;;;;-1:-1:-1;;;;;19739:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19739:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19739:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19739:40:0;19801;;;-1:-1:-1;;;19801:40:0;;19835:4;19801:40;;;;;;19739;;-1:-1:-1;;;;;;19801:25:0;;;;;:40;;;;;19739;;19801;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19801:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19801:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19801:40:0;;-1:-1:-1;19863:14:0;;-1:-1:-1;;;;;;;19891:22:0;;;;;19880:33;;:75;;19954:1;19880:75;;;19940:10;19928:9;-1:-1:-1;;;;;19928:22:0;;19916:8;:35;19880:75;19863:92;;19966:14;20006:10;19994:9;-1:-1:-1;;;;;19994:22:0;;19983:8;:33;:75;;20057:1;19983:75;;;20043:10;20031:9;-1:-1:-1;;;;;20031:22:0;;20019:8;:35;19983:75;19966:92;;20089:1;20077:9;:13;:30;;;;20106:1;20094:9;:13;20077:30;20069:77;;;;-1:-1:-1;;;20069:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20248:7;;;;;;;20232:13;;20291:48;;20315:23;;:9;;20248:7;;20315:13;:23;:::i;:::-;20291:19;:8;20304:5;20291:19;:12;:19;:::i;:::-;:23;:48;:23;:48;:::i;:::-;20266:74;-1:-1:-1;20351:21:0;20376:48;20400:23;:9;20414:8;20400:23;:13;:23;:::i;20376:48::-;20351:74;-1:-1:-1;20486:44:0;20521:8;20486:30;-1:-1:-1;;;;;20486:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:44;:34;:44;:::i;:::-;20444:38;:16;20465;20444:38;:20;:38;:::i;:::-;:86;;20436:109;;;;;-1:-1:-1;;;20436:109:0;;;;;;;;;;;;-1:-1:-1;;;20436:109:0;;;;;;;;;;;;;;;12349:1;;;20569:49;20577:8;20587;20597:9;20608;20569:7;:49::i;:::-;20634:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20634:66:0;;;20639:10;;20634:66;;;;;;;;;-1:-1:-1;;12372:1:0;12361:8;:12;-1:-1:-1;;;;;;;;;18778:1930:0:o;5484:43::-;;;;;;;;;;;;;;-1:-1:-1;;;5484:43:0;;;;:::o;12389:231::-;12522:8;;-1:-1:-1;;;;;12522:8:0;;;;-1:-1:-1;;;12553:8:0;;;;;;-1:-1:-1;;;12594:18:0;;;;;12389:231::o;7536:147::-;7600:4;7617:36;7626:10;7638:7;7647:5;7617:8;:36::i;:::-;-1:-1:-1;7671:4:0;7536:147;;;;;:::o;11625:21::-;;;-1:-1:-1;;;;;11625:21:0;;:::o;5627:24::-;;;;:::o;7838:301::-;-1:-1:-1;;;;;7937:15:0;;7916:4;7937:15;;;:9;:15;;;;;;;;7953:10;7937:27;;;;;;;;-1:-1:-1;;7937:39:0;7933:140;;-1:-1:-1;;;;;8023:15:0;;;;;;:9;:15;;;;;;;;8039:10;8023:27;;;;;;;;:38;;8055:5;8023:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7993:15:0;;;;;;:9;:15;;;;;;;;8009:10;7993:27;;;;;;;:68;7933:140;8083:26;8093:4;8099:2;8103:5;8083:9;:26::i;:::-;-1:-1:-1;8127:4:0;7838:301;;;;;:::o;5919:108::-;5961:66;5919:108;:::o;5585:35::-;5618:2;5585:35;:::o;5776:31::-;;;;:::o;13447:208::-;13543:7;;-1:-1:-1;;;;;13543:7:0;13529:10;:21;13521:52;;;;;-1:-1:-1;;;13521:52:0;;;;;;;;;;;;-1:-1:-1;;;13521:52:0;;;;;;;;;;;;;;;13604:6;:16;;-1:-1:-1;;;;;13604:16:0;;;-1:-1:-1;;;;;;13604:16:0;;;;;;;13631:6;:16;;;;;;;;;;;13447:208::o;12158:26::-;;;;;;:::o;11976:32::-;;;;:::o;12015:::-;;;;:::o;15852:1238::-;15901:14;12282:8;;12294:1;12282:13;12274:41;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;;;;12337:1;12326:8;:12;;;12337:1;15970:13;:11;:13::i;:::-;-1:-1:-1;16032:6:0;;16025:39;;;-1:-1:-1;;;16025:39:0;;16058:4;16025:39;;;;;;15928:55;;-1:-1:-1;15928:55:0;;-1:-1:-1;16009:13:0;;-1:-1:-1;;;;;16032:6:0;;;;16025:24;;:39;;;;;;;;;;;;;;16032:6;16025:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16025:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16025:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16025:39:0;16098:6;;16091:39;;;-1:-1:-1;;;16091:39:0;;16124:4;16091:39;;;;;;16025;;-1:-1:-1;16075:13:0;;-1:-1:-1;;;;;16098:6:0;;;;16091:24;;:39;;;;;16025;;16091;;;;;;;;16098:6;16091:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16091:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16091:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16091:39:0;;-1:-1:-1;16141:12:0;16156:23;:8;-1:-1:-1;;;;;16156:23:0;;;:12;:23;:::i;:::-;16141:38;-1:-1:-1;16190:12:0;16205:23;:8;-1:-1:-1;;;;;16205:23:0;;;:12;:23;:::i;:::-;16190:38;;16241:10;16254:30;16263:9;16274;16254:8;:30::i;:::-;16295:17;16315:11;16241:43;;-1:-1:-1;16419:17:0;16415:352;;16465:54;11487:5;16465:31;16475:20;:7;16487;16475:20;:11;:20;:::i;:::-;16465:9;:31::i;:54::-;16453:66;;16533:36;16547:1;11487:5;16533;:36::i;:::-;16415:352;;;16669:86;-1:-1:-1;;;;;16678:37:0;;:25;:7;16690:12;16678:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;16717:37:0;;:25;:7;16729:12;16717:25;:11;:25;:::i;:::-;:37;;;;;;16669:8;:86::i;:::-;16657:98;;16415:352;16797:1;16785:9;:13;16777:64;;;;-1:-1:-1;;;16777:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16852:20;16858:2;16862:9;16852:5;:20::i;:::-;16885:49;16893:8;16903;16913:9;16924;16885:7;:49::i;:::-;16949:5;16945:47;;;16983:8;;16964:28;;-1:-1:-1;;;;;16969:8:0;;;;-1:-1:-1;;;16983:8:0;;;16964:28;:18;:28;:::i;:::-;16956:5;:36;16945:47;17048:34;;;;;;;;;;;;;;17053:10;;17048:34;;;;;;;;-1:-1:-1;;12372:1:0;12361:8;:12;-1:-1:-1;15852:1238:0;;;-1:-1:-1;;;;;;15852:1238:0:o;5658:41::-;;;;;;;;;;;;;:::o;12054:17::-;;;;:::o;6034:38::-;;;;;;;;;;;;;:::o;17202:1464::-;17251:12;17265;12282:8;;12294:1;12282:13;12274:41;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;;;;12337:1;12326:8;:12;;;12337:1;17332:13;:11;:13::i;:::-;-1:-1:-1;17389:6:0;;17470;;17549:40;;;-1:-1:-1;;;17549:40:0;;17583:4;17549:40;;;;;;17290:55;;-1:-1:-1;17290:55:0;;-1:-1:-1;;;;;;17389:6:0;;;;17470;;;17371:15;;17389:6;;17549:25;;:40;;;;;;;;;;;;;;17389:6;17549:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17549:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17549:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17549:40:0;17616;;;-1:-1:-1;;;17616:40:0;;17650:4;17616:40;;;;;;17549;;-1:-1:-1;17600:13:0;;-1:-1:-1;;;;;17616:25:0;;;;;:40;;;;;17549;;17616;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17616:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17616:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17616:40:0;17702:4;17667:14;17684:24;;;:9;17616:40;17684:24;;;;;17616:40;;-1:-1:-1;17734:30:0;17743:9;17754;17734:8;:30::i;:::-;17775:17;17795:11;17721:43;;-1:-1:-1;17795:11:0;17905:23;:9;17919:8;17905:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;18038:12:0;18012:23;:9;18026:8;18012:23;:13;:23;:::i;:::-;:38;;;;;;18002:48;;18127:1;18117:7;:11;:26;;;;;18142:1;18132:7;:11;18117:26;18109:77;;;;-1:-1:-1;;;18109:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18197:31;18211:4;18218:9;18197:5;:31::i;:::-;18239:35;18253:7;18262:2;18266:7;18239:13;:35::i;:::-;18285;18299:7;18308:2;18312:7;18285:13;:35::i;:::-;18342:40;;;-1:-1:-1;;;18342:40:0;;18376:4;18342:40;;;;;;-1:-1:-1;;;;;18342:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18342:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18342:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18342:40:0;18404;;;-1:-1:-1;;;18404:40:0;;18438:4;18404:40;;;;;;18342;;-1:-1:-1;;;;;;18404:25:0;;;;;:40;;;;;18342;;18404;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18404:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18404:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18404:40:0;;-1:-1:-1;18457:49:0;18465:8;18404:40;18485:9;18496;18457:7;:49::i;:::-;18521:5;18517:47;;;18555:8;;18536:28;;-1:-1:-1;;;;;18541:8:0;;;;-1:-1:-1;;;18555:8:0;;;18536:28;:18;:28;:::i;:::-;18528:5;:36;18517:47;18620:38;;;;;;;;;;;;;;-1:-1:-1;;;;;18620:38:0;;;18625:10;;18620:38;;;;;;;;;;;12349:1;;;;;;;;;12372;12361:8;:12;;;;17202:1464;;;:::o;5534:44::-;;;;;;;;;;;;;;-1:-1:-1;;;5534:44:0;;;;:::o;7691:139::-;7751:4;7768:32;7778:10;7790:2;7794:5;7768:9;:32::i;11446:46::-;11487:5;11446:46;:::o;20757:334::-;12282:8;;12294:1;12282:13;12274:41;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;;;;12337:1;12326:8;:12;20826:6;;20876;;20980:8;;20935:40;;;-1:-1:-1;;;20935:40:0;;20969:4;20935:40;;;;;;-1:-1:-1;;;;;20826:6:0;;;;20876;;;;20908:82;;20826:6;;20931:2;;20935:54;;-1:-1:-1;;;;;20980:8:0;;20826:6;;20935:25;;:40;;;;;;;;;;;;;;;20826:6;20935:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20935:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20935:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20935:40:0;;:54;:44;:54;:::i;:::-;20908:13;:82::i;:::-;21073:8;;21028:40;;;-1:-1:-1;;;21028:40:0;;21062:4;21028:40;;;;;;21001:82;;21015:7;;21024:2;;21028:54;;-1:-1:-1;;;21073:8:0;;-1:-1:-1;;;;;21073:8:0;;-1:-1:-1;;;;;21028:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;21001:82:0;-1:-1:-1;;12372:1:0;12361:8;:12;-1:-1:-1;20757:334:0:o;11596:22::-;;;-1:-1:-1;;;;;11596:22:0;;:::o;11653:21::-;;;-1:-1:-1;;;;;11653:21:0;;:::o;8147:670::-;8293:15;8281:8;:27;;8273:56;;;;;-1:-1:-1;;;8273:56:0;;;;;;;;;;;;-1:-1:-1;;;8273:56:0;;;;;;;;;;;;;;;8445:16;;-1:-1:-1;;;;;8541:13:0;;;8340:14;8541:13;;;:6;:13;;;;;;;;:15;;;;;;;;;8490:77;;5961:66;8490:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8490:77:0;;;;;8480:88;;;;;;-1:-1:-1;;;8381:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8381:202:0;;;;;;8357:237;;;;;;;;;8632:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8340:14;;8541:15;8632:26;;;;;-1:-1:-1;;8632:26:0;;;;;;;;;;8541:15;8632:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8632:26:0;;-1:-1:-1;;8632:26:0;;;-1:-1:-1;;;;;;;8677:30:0;;;;;;:59;;;8731:5;-1:-1:-1;;;;;8711:25:0;:16;-1:-1:-1;;;;;8711:25:0;;8677:59;8669:98;;;;;-1:-1:-1;;;8669:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8778:31;8787:5;8794:7;8803:5;8778:8;:31::i;:::-;8147:670;;;;;;;;;:::o;13663:277::-;13739:1;13728:8;:12;;;13720:50;;;;;-1:-1:-1;;;13720:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13803:7;;-1:-1:-1;;;;;13803:7:0;13789:10;:21;13781:56;;;;;-1:-1:-1;;;13781:56:0;;;;;;;;;;;;-1:-1:-1;;;13781:56:0;;;;;;;;;;;;;;;13868:4;13856:8;:16;;;;13848:55;;;;;-1:-1:-1;;;13848:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13914:7;:18;;-1:-1:-1;;13914:18:0;;;;;;;;;;;;13663:277::o;5706:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;21140:158::-;12282:8;;12294:1;12282:13;12274:41;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;-1:-1:-1;;;12274:41:0;;;;;;;;;;;;;;;12337:1;12326:8;:12;21196:6;;21189:39;;;-1:-1:-1;;;21189:39:0;;21222:4;21189:39;;;;;;21181:109;;-1:-1:-1;;;;;21196:6:0;;21189:24;;:39;;;;;;;;;;;;;;21196:6;21189:39;;;5:2:-1;;;;30:1;27;20:12;5:2;21189:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21189:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21189:39:0;21237:6;;21230:39;;;-1:-1:-1;;;21230:39:0;;21263:4;21230:39;;;;;;-1:-1:-1;;;;;21237:6:0;;;;21230:24;;:39;;;;;21189;;21230;;;;;;;;21237:6;21230:39;;;5:2:-1;;;;30:1;27;20:12;5:2;21230:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21230:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21230:39:0;21271:8;;-1:-1:-1;;;;;21271:8:0;;;;-1:-1:-1;;;21281:8:0;;;21181:7;:109::i;:::-;12372:1;12361:8;:12;21140:158::o;12628:285::-;11551:34;;;;;;;;;;;;;;;;;12756:43;;-1:-1:-1;;;;;12756:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12756:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12745:55:0;;;;12710:12;;12724:17;;12745:10;;;12756:43;12745:55;;;25:18:-1;12745:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12745:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12709:91:0;;;;12819:7;:57;;;;-1:-1:-1;12831:11:0;;:16;;:44;;;12862:4;12851:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12851:24:0;12831:44;12811:94;;;;;-1:-1:-1;;;12811:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12628:285;;;;;:::o;5187:142::-;5239:6;5266;;;:30;;-1:-1:-1;;5281:5:0;;;5295:1;5290;5281:5;5290:1;5276:15;;;;;:20;5266:30;5258:63;;;;;-1:-1:-1;;;5258:63:0;;;;;;;;;;;;-1:-1:-1;;;5258:63:0;;;;;;;;;;;;;;5050:129;5134:5;;;5129:16;;;;5121:50;;;;;-1:-1:-1;;;5121:50:0;;;;;;;;;;;;-1:-1:-1;;;5121:50:0;;;;;;;;;;;;;;14025:858;-1:-1:-1;;;;;14137:23:0;;;;;:50;;-1:-1:-1;;;;;;14164:23:0;;;14137:50;14129:80;;;;;-1:-1:-1;;;14129:80:0;;;;;;;;;;;;-1:-1:-1;;;14129:80:0;;;;;;;;;;;;;;;14324:18;;14251:23;:15;:23;;;-1:-1:-1;;;14324:18:0;;;;14307:35;;;14380:15;;;;;;:33;;-1:-1:-1;;;;;;14399:14:0;;;;14380:33;:51;;;;-1:-1:-1;;;;;;14417:14:0;;;;14380:51;14376:336;;;14586:11;14533:64;;14538:44;14572:9;14538:27;14555:9;14538:16;:27::i;:::-;-1:-1:-1;;;;;14538:33:0;;:44;:33;:44;:::i;:::-;14509:20;:88;;-1:-1:-1;;;;;14533:50:0;;;;:64;;;;14509:88;;;14636:64;;;14641:44;14675:9;14641:27;14658:9;14641:16;:27::i;:44::-;14612:20;:88;;-1:-1:-1;;;;;14636:50:0;;;;:64;;;;14612:88;;;14376:336;14722:8;:28;;-1:-1:-1;;14722:28:0;-1:-1:-1;;;;;14722:28:0;;;;;;;-1:-1:-1;;;;14761:28:0;-1:-1:-1;;;14761:28:0;;;;;;;;;-1:-1:-1;;;;;14800:35:0;-1:-1:-1;;;14800:35:0;;;;;;;;;14851:24;;;14856:8;;;14851:24;;14866:8;;;;;;;14851:24;;;;;;;;;;;;;;;;;14025:858;;;;;;:::o;7131:169::-;-1:-1:-1;;;;;7212:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;7261:31;;;;;;;;;;;;;;;;;7131:169;;;:::o;7308:220::-;-1:-1:-1;;;;;7402:15:0;;;;;;:9;:15;;;;;;:26;;7422:5;7402:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;7384:15:0;;;;;;;:9;:15;;;;;;:44;;;;7455:13;;;;;;;:24;;7473:5;7455:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;7439:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;7495:25;;;;;;;7439:13;;7495:25;;;;;;;;;;;;;7308:220;;;:::o;14891:849::-;14964:10;14987:13;15019:7;;;;;;;;;-1:-1:-1;;;;;15019:7:0;-1:-1:-1;;;;;15003:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15003:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15003:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15003:32:0;15098:5;;-1:-1:-1;;;;;15054:19:0;;;;;;-1:-1:-1;15003:32:0;;-1:-1:-1;15098:5:0;15129:604;;15159:11;;15155:508;;15191:10;15204:41;15214:30;-1:-1:-1;;;;;15214:15:0;;;;:30;;;:19;:30;:::i;15204:41::-;15191:54;;15264:14;15281:17;15291:6;15281:9;:17::i;:::-;15264:34;;15329:9;15321:5;:17;15317:331;;;15363:14;15380:44;15422:1;15380:37;15396:20;:5;15406:9;15396:20;:9;:20;:::i;:::-;15380:11;;;:37;:15;:37;:::i;:44::-;15363:61;-1:-1:-1;15447:16:0;15466:34;15483:16;:9;15497:1;15483:16;:13;:16;:::i;:::-;15466:12;:5;15476:1;15466:12;:9;:12;:::i;:::-;:16;:34;:16;:34;:::i;:::-;15447:53;;15523:14;15552:11;15540:9;:23;;;;;;;-1:-1:-1;15590:13:0;;15586:42;;15605:23;15611:5;15618:9;15605:5;:23::i;:::-;15317:331;;;;15155:508;;;15129:604;;;15684:11;;15680:53;;15720:1;15712:5;:9;15680:53;14891:849;;;;;;:::o;9183:303::-;9228:6;9255:1;9251;:5;9247:232;;;-1:-1:-1;9277:1:0;9310;9306;9302:5;;:9;9326:92;9337:1;9333;:5;9326:92;;;9363:1;9359:5;;9401:1;9396;9392;9388;:5;;;;;;:9;9387:15;;;;;;9383:19;;9326:92;;;9247:232;;;;9439:6;;9435:44;;-1:-1:-1;9466:1:0;9435:44;9183:303;;;:::o;6705:201::-;6778:11;;:22;;6794:5;6778:22;:15;:22;:::i;:::-;6764:11;:36;;;-1:-1:-1;;;;;6827:13:0;;;;:9;:13;;;;;;:24;;6845:5;6827:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6811:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6867:31;;;;;;;6811:13;;;;6867:31;;;;;;;;;;6705:201;;:::o;8969:96::-;9021:6;9048:1;9044;:5;:13;;9056:1;9044:13;;;9052:1;9044:13;9040:17;8969:96;-1:-1:-1;;;8969:96:0:o;6914:209::-;-1:-1:-1;;;;;6993:15:0;;;;;;:9;:15;;;;;;:26;;7013:5;6993:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6975:15:0;;;;;;:9;:15;;;;;:44;;;;7044:11;:22;;7060:5;7044:22;:15;:22;:::i;:::-;7030:11;:36;;;7082:33;;;;;;;;-1:-1:-1;;;;;7082:33:0;;;;;;;;;;;;;6914:209;;:::o;9834:120::-;-1:-1:-1;;;;;9910:10:0;-1:-1:-1;;;9910:17:0;;9834:120::o;10025:108::-;10085:9;-1:-1:-1;;;;;10115:10:0;;-1:-1:-1;;;;;10111:14:0;;10115:10;10111:14;;;;;;10025:108;-1:-1:-1;;;10025:108:0:o;4914:128::-;4998:5;;;4993:16;;;;4985:49;;;;;-1:-1:-1;;;4985:49:0;;;;;;;;;;;;-1:-1:-1;;;4985:49:0;;;;;;;;;;;;;

Swarm Source

bzzr://3e4cdfe4a2c857b347361b3b60b3595e9cdcb946c7e9d11407d818baebb98023
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.