Contract 0x2113ba4000d8a0b201c3e916e63fe0dcdfbe476a

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xac2fc48bccb32324436818e69f53e7395170b47f83b0693490911ba352ec965f83646522021-06-17 3:29:1121 hrs 4 mins ago0x8645d2a5f4c9d412e0b7c9c80bdaa2d3b6449e32 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xfc762212911f94fc218803166bba8d322fb2176b29a0b1c96ab61f49568acba783161452021-06-15 10:42:042 days 13 hrs ago0x5bdb11ec8000b2f19fe937c3d57c05c63cba9f5f IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x7f7a6f94592266324288f1bcbf33fd42cd7766328964dc0b61d287baa981061282574902021-06-13 9:10:174 days 15 hrs ago0xe059d5f7d1e68f0191d1eb9174d95ce2605f04f1 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xd223c98c6d587516d0b62ccd3e1b2d19427beb14e9222b1c98d9daa71891893e82190542021-06-12 0:56:545 days 23 hrs ago0xd49c9065c26ece23e12ed4cd7f440ef55de51cb3 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x4dec4aa28eac7aecdbfa6e64bdccfd527a1f6c37ce604c17e67465a7272e48de81400842021-06-09 6:53:478 days 17 hrs ago0x0ab745e9055bb6c21456616734be26cc29bed637 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xc4767309321bdcee63379f3de9b0d65c91738c2df7a248fcba2dd4b7c90a53ff81379852021-06-09 5:08:218 days 19 hrs ago0x4e747c5dace717f51d3740891da6a9ff84d75cc3 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xb21acac455fd1d47ebd9efbe04f94bc11c8d11c2cd1b5cd8183fc98c87ea9f1e81248952021-06-08 18:11:309 days 6 hrs ago0x857e12fa9da51961d7d854e2b6638bf47b7c4812 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xbac7e5fca590c4e6dd0b66b060d82641642050228d3b591aafece9d2094bc70d80931152021-06-07 15:39:4310 days 8 hrs ago0xe295cff351dfd2bcad9b8c81f7f8447469a92410 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x61f5993e747e1dbab6836f34f9e9869ed630cb21712089cb964802edb6cf69b880878922021-06-07 11:17:4010 days 13 hrs ago0x51db3d1044cc3fec0b76c8a21977b63ac69115dc IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x0cb28a42a7ba3c91533f82ec946c961f55ae11c175ac208da201ce5ac99b823980318202021-06-05 12:30:0112 days 12 hrs ago0x624080ada0930096408525e473f62c243c0ba4bd IN  CheeseSwap: KP3RB-WBNB0 BNB0.00018022
0xb2d00341dc9ca89d5884da37bd816304efe1bd0d85d8267ee753c5c8e971423879607282021-06-03 1:04:1314 days 23 hrs ago0xe295cff351dfd2bcad9b8c81f7f8447469a92410 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x93d0289ce5b579d8cc756403a633957675e5e627b3f8db370f808f8b3a7be5b278910042021-05-31 14:45:5117 days 9 hrs ago0x4e747c5dace717f51d3740891da6a9ff84d75cc3 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x6b8ca6a1281ecd27dcfc4a033a03abe8a6e288288e2c179888230d3b67583b5178503692021-05-30 4:46:0618 days 19 hrs ago0x6a9ae0b8a3717d8caadce065d273b9a0882be8a3 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x0e28d0ee352c7c49372eb7bad26d8c482954ff8e3d60d596503ef249e92d778e78062872021-05-28 15:53:5620 days 8 hrs ago0x89e7a08cfb76fd64a67d31b310007a41be653a97 IN  CheeseSwap: KP3RB-WBNB0 BNB0.000072395
0x8ef277bc9a25760534036049c90d193e44b213f695c78bd9f25b347e21723d1e77133582021-05-25 9:58:2723 days 14 hrs ago0x30c25704ed625ab02ce330fecb16e10f4235257e IN  CheeseSwap: KP3RB-WBNB0 BNB0.000072395
0x12be2fa4a3b942cfacc94b8dbe19a14e1a4b346da9cc5a4212bd8d7022bf82d776912862021-05-24 15:30:4224 days 9 hrs ago0x6c3278ac551892425c70d65b1692d2bbb7374971 IN  CheeseSwap: KP3RB-WBNB0 BNB0.000266124
0x0f6239e026f2f320e0371f9cb045418d745ea4fcdb715958727e266b9999177e76875772021-05-24 12:24:5724 days 12 hrs ago0xed22747b9bfb777f6f66d2c1e2caee88acef3f38 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x1669a706693d1d1dd171e6bfe9bb21d0daa2355aaefcc866c9a3b4f001e016f074394332021-05-15 19:42:2233 days 4 hrs ago0xed22747b9bfb777f6f66d2c1e2caee88acef3f38 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xaec5335e38c7a881eba7d081143356216b14c53bfdbc47ae7dacf47f586f220373092792021-05-11 1:11:3937 days 23 hrs ago0x44e1282ff4834680ac011dc69b4b358d3cdeb687 IN  CheeseSwap: KP3RB-WBNB0 BNB0.000532248
0x3e2b09d610981389a8c421a7c8eed7d5b527082b1b7c69a5a0e70e661dc6931072664642021-05-09 9:46:2439 days 14 hrs ago0x3511a3eac2373ad47c6e965c67c2b52ada230abf IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x121e510c21c1439b668499cd0d595c7574a2e41fe6aa49ee09ea5728656ba16e72442622021-05-08 14:14:3640 days 10 hrs ago0x44e1282ff4834680ac011dc69b4b358d3cdeb687 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00012577
0x0cf201bafd832a83b43281dee11f79e70c771b89382592f6ffcaaf2f554490b672442622021-05-08 14:14:3640 days 10 hrs ago0x44e1282ff4834680ac011dc69b4b358d3cdeb687 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x48a39b33aeefc522004407dee1d049a08b6327c9f24b370597c1c700abeaeccf72437502021-05-08 13:46:2540 days 10 hrs ago0x4999553b1663a0dc8e481e336881837d87cf8665 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0x4e122e84781d286b6d64ecf4f505792a1aed4eef961e61efc054e292f96351fd72317102021-05-08 3:35:5940 days 20 hrs ago0xd49c9065c26ece23e12ed4cd7f440ef55de51cb3 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
0xe4a6dc12ca2f89bba38a17e749fcc16678711c18c8ac242fb4ca7aeddaecf75b72260202021-05-07 22:46:3741 days 1 hr ago0x6a3ed5ad73f29d2400f8f3ce7b45b5d5d742d224 IN  CheeseSwap: KP3RB-WBNB0 BNB0.00022177
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x33f3cd1ed60710e98aa2e237fb16b776f9fba8e11b438ae8c285eeb0aeba554354707392021-03-07 11:29:54102 days 13 hrs ago Keep3rb Network: KP3RB/CHS Oracle CheeseSwap: KP3RB-WBNB0 BNB
0x33f3cd1ed60710e98aa2e237fb16b776f9fba8e11b438ae8c285eeb0aeba554354707392021-03-07 11:29:54102 days 13 hrs ago Keep3rb Network: KP3RB/CHS Oracle CheeseSwap: KP3RB-WBNB0 BNB
0x33f3cd1ed60710e98aa2e237fb16b776f9fba8e11b438ae8c285eeb0aeba554354707392021-03-07 11:29:54102 days 13 hrs ago Keep3rb Network: KP3RB/CHS Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xe3bdd274366e04b64d36a42b083a7fcd1da4c2abe969d4e9fad2b0057aa87f5154707272021-03-07 11:29:18102 days 13 hrs ago Keep3rb Network: CheeseSwap Sliding Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xe3bdd274366e04b64d36a42b083a7fcd1da4c2abe969d4e9fad2b0057aa87f5154707272021-03-07 11:29:18102 days 13 hrs ago Keep3rb Network: CheeseSwap Sliding Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xe3bdd274366e04b64d36a42b083a7fcd1da4c2abe969d4e9fad2b0057aa87f5154707272021-03-07 11:29:18102 days 13 hrs ago Keep3rb Network: CheeseSwap Sliding Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xb5b993d71061ae9614b172c2611c337526de00218832a4adffa012c8fdf2239d54704292021-03-07 11:14:24102 days 13 hrs ago Keep3rb Network: CHS/BNB Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xb5b993d71061ae9614b172c2611c337526de00218832a4adffa012c8fdf2239d54704292021-03-07 11:14:24102 days 13 hrs ago Keep3rb Network: CHS/BNB Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xb5b993d71061ae9614b172c2611c337526de00218832a4adffa012c8fdf2239d54704292021-03-07 11:14:24102 days 13 hrs ago Keep3rb Network: CHS/BNB Oracle CheeseSwap: KP3RB-WBNB0 BNB
0xc6699b8e0e2b9478612027e1adc80242ce4f882a57f0dbedbe4869ebabdac56e54704262021-03-07 11:14:15102 days 13 hrs ago Keep3rb Network: CheeseSwapOracle CheeseSwap: KP3RB-WBNB0 BNB
0xc6699b8e0e2b9478612027e1adc80242ce4f882a57f0dbedbe4869ebabdac56e54704262021-03-07 11:14:15102 days 13 hrs ago Keep3rb Network: CheeseSwapOracle CheeseSwap: KP3RB-WBNB0 BNB
0xc6699b8e0e2b9478612027e1adc80242ce4f882a57f0dbedbe4869ebabdac56e54704262021-03-07 11:14:15102 days 13 hrs ago Keep3rb Network: CheeseSwapOracle CheeseSwap: KP3RB-WBNB0 BNB
0x8f4e9afc97cfdd42b37f090a8f73028a866dd134176d2b7ddb0847448efd92e054701582021-03-07 11:00:51102 days 13 hrs ago CheeseSwap: KP3RB-WBNB Binance: WBNB Token0 BNB
0x8f4e9afc97cfdd42b37f090a8f73028a866dd134176d2b7ddb0847448efd92e054701582021-03-07 11:00:51102 days 13 hrs ago CheeseSwap: KP3RB-WBNB Keep3rb Network: KP3RB Token0 BNB
0x8f4e9afc97cfdd42b37f090a8f73028a866dd134176d2b7ddb0847448efd92e054701582021-03-07 11:00:51102 days 13 hrs ago CheeseSwap: KP3RB-WBNB Binance: WBNB Token0 BNB
0x8f4e9afc97cfdd42b37f090a8f73028a866dd134176d2b7ddb0847448efd92e054701582021-03-07 11:00:51102 days 13 hrs ago CheeseSwap: Router CheeseSwap: KP3RB-WBNB0 BNB
0x8f4e9afc97cfdd42b37f090a8f73028a866dd134176d2b7ddb0847448efd92e054701582021-03-07 11:00:51102 days 13 hrs ago CheeseSwap: Router CheeseSwap: KP3RB-WBNB0 BNB
0x16947c132cc59ba9396585df07fe601626598aafdfa45d9ee6c070a5d3d7612154699662021-03-07 10:51:15102 days 13 hrs ago Keep3rb Network: CheeseSwapOracle CheeseSwap: KP3RB-WBNB0 BNB
0x16947c132cc59ba9396585df07fe601626598aafdfa45d9ee6c070a5d3d7612154699662021-03-07 10:51:15102 days 13 hrs ago Keep3rb Network: CheeseSwapOracle CheeseSwap: KP3RB-WBNB0 BNB
0x16947c132cc59ba9396585df07fe601626598aafdfa45d9ee6c070a5d3d7612154699662021-03-07 10:51:15102 days 13 hrs ago Keep3rb Network: CheeseSwapOracle CheeseSwap: KP3RB-WBNB0 BNB
0x1740eb2bf31650b81888dc8e6575c89c21dfc24691e43f4a8fd92c778f15c3e254696962021-03-07 10:37:45102 days 13 hrs ago CheeseSwap: KP3RB-WBNB Binance: WBNB Token0 BNB
0x1740eb2bf31650b81888dc8e6575c89c21dfc24691e43f4a8fd92c778f15c3e254696962021-03-07 10:37:45102 days 13 hrs ago CheeseSwap: KP3RB-WBNB Keep3rb Network: KP3RB Token0 BNB
0x1740eb2bf31650b81888dc8e6575c89c21dfc24691e43f4a8fd92c778f15c3e254696962021-03-07 10:37:45102 days 13 hrs ago CheeseSwap: KP3RB-WBNB Binance: WBNB Token0 BNB
0x1740eb2bf31650b81888dc8e6575c89c21dfc24691e43f4a8fd92c778f15c3e254696962021-03-07 10:37:45102 days 13 hrs ago CheeseSwap: Router CheeseSwap: KP3RB-WBNB0 BNB
0x1740eb2bf31650b81888dc8e6575c89c21dfc24691e43f4a8fd92c778f15c3e254696962021-03-07 10:37:45102 days 13 hrs ago CheeseSwap: Router CheeseSwap: KP3RB-WBNB0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xc8213bba1ad62283847f388d834b876994843b90

Contract Name:
CheeseSwapPair

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 BscScan.com on 2020-11-09
*/

// SPDX-License-Identifier: MIT


pragma solidity =0.5.16;

interface ICheeseSwapFactory {
    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;
}


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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

interface ICheeseSwapERC20 {
    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;
}

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

contract CheeseSwapERC20 is ICheeseSwapERC20 {
    using SafeMath for uint;

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

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

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

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

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

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

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

contract CheeseSwapPair is ICheeseSwapPair, CheeseSwapERC20 {
    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

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'CheeseSwap: 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))), 'CheeseSwap: 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, 'CheeseSwap: 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), 'CheeseSwap: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

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

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = 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, 'CheeseSwap: 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, 'CheeseSwap: 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, 'CheeseSwap: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'CheeseSwap: 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, 'CheeseSwap: 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) ICheeseSwapCallee(to).cheeseswapCall(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, 'CheeseSwap: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(2));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(2));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'CheeseSwap: 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":"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":"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"}]

60806040526001600c5534801561001557600080fd5b5060405146908060526123a08239604080519182900360520182208282018252600e83526d43686565736553776170204c507360901b6020938401528151808301835260018152603160f81b908401528151808401919091527f458b5fc8b30b49d2788ac023f71abeb89b3b1f6688e846b2fdb87c0da0d8a01b818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612297806101096000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b01565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b2b565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b55565b604080519115158252519081900360200190f35b610339610b6c565b604080516001600160a01b039092168252519081900360200190f35b61035d610b7b565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b81565b61035d610c1b565b6103b5610c3f565b6040805160ff9092168252519081900360200190f35b61035d610c44565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c4a565b61035d610ccf565b61035d610cd5565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cdb565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fdc565b61035d610fee565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610ff4565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611006565b6040805192835260208301919091528051918290030190f35b6102446113ad565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113d2565b61035d6113df565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113e5565b610339611551565b610339611560565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561156f565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611772565b61023a61178f565b600c5460011461060f576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c55841515806106225750600084115b61065d5760405162461bcd60e51b81526004018080602001828103825260268152602001806121f66026913960400191505060405180910390fd5b600080610668610b2b565b5091509150816001600160701b03168710801561068d5750806001600160701b031686105b6106c85760405162461bcd60e51b815260040180806020018281038252602281526020018061221c6022913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107065750806001600160a01b0316896001600160a01b031614155b610750576040805162461bcd60e51b8152602060048201526016602482015275436865657365537761703a20494e56414c49445f544f60501b604482015290519081900360640190fd5b8a1561076157610761828a8d6118f2565b891561077257610772818a8c6118f2565b861561082d57886001600160a01b03166358930f9c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081457600080fd5b505af1158015610828573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087357600080fd5b505afa158015610887573d6000803e3d6000fd5b505050506040513d602081101561089d57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b5051925060009150506001600160701b0385168a90038311610936576000610945565b89856001600160701b03160383035b9050600089856001600160701b0316038311610962576000610971565b89856001600160701b03160383035b905060008211806109825750600081115b6109bd5760405162461bcd60e51b815260040180806020018281038252602581526020018061223e6025913960400191505060405180910390fd5b60006109f16109d384600263ffffffff611a8c16565b6109e5876103e863ffffffff611a8c16565b9063ffffffff611aef16565b90506000610a096109d384600263ffffffff611a8c16565b9050610a3a620f4240610a2e6001600160701b038b8116908b1663ffffffff611a8c16565b9063ffffffff611a8c16565b610a4a838363ffffffff611a8c16565b1015610a8d576040805162461bcd60e51b815260206004820152600d60248201526c436865657365537761703a204b60981b604482015290519081900360640190fd5b5050610a9b84848888611b3f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600e81526020016d43686565736553776170204c507360901b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b62338484611d05565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c06576001600160a01b0384166000908152600260209081526040808320338452909152902054610be1908363ffffffff611aef16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c11848484611d67565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610ca1576040805162461bcd60e51b815260206004820152601560248201527421b432b2b9b2a9bbb0b81d102327a92124a22222a760591b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d29576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c81905580610d39610b2b565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e0a57600080fd5b505afa158015610e1e573d6000803e3d6000fd5b505050506040513d6020811015610e3457600080fd5b505190506000610e53836001600160701b03871663ffffffff611aef16565b90506000610e70836001600160701b03871663ffffffff611aef16565b90506000610e7e8787611e21565b60005490915080610ebb57610ea76103e86109e5610ea2878763ffffffff611a8c16565b611f7f565b9850610eb660006103e8611fd1565b610f0a565b610f076001600160701b038916610ed8868463ffffffff611a8c16565b81610edf57fe5b046001600160701b038916610efa868563ffffffff611a8c16565b81610f0157fe5b04612067565b98505b60008911610f495760405162461bcd60e51b81526004018080602001828103825260298152602001806121cd6029913960400191505060405180910390fd5b610f538a8a611fd1565b610f5f86868a8a611b3f565b8115610f8f57600854610f8b906001600160701b0380821691600160701b90041663ffffffff611a8c16565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611055576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c81905580611065610b2b565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561113957600080fd5b505afa15801561114d573d6000803e3d6000fd5b505050506040513d602081101561116357600080fd5b5051306000908152600160205260408120549192506111828888611e21565b60005490915080611199848763ffffffff611a8c16565b816111a057fe5b049a50806111b4848663ffffffff611a8c16565b816111bb57fe5b04995060008b1180156111ce575060008a115b6112095760405162461bcd60e51b81526004018080602001828103825260298152602001806121a46029913960400191505060405180910390fd5b611213308461207f565b61121e878d8d6118f2565b611229868d8c6118f2565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d602081101561129957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112e557600080fd5b505afa1580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b5051935061131f85858b8b611b3f565b811561134f5760085461134b906001600160701b0380821691600160701b90041663ffffffff611a8c16565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600981526020016804368656573652d4c560bc1b81525081565b6000610b62338484611d67565b6103e881565b600c54600114611431576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114e092859287926114db926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114a357600080fd5b505afa1580156114b7573d6000803e3d6000fd5b505050506040513d60208110156114cd57600080fd5b50519063ffffffff611aef16565b6118f2565b600854604080516370a0823160e01b8152306004820152905161154792849287926114db92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114a357600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115ba576040805162461bcd60e51b815260206004820152601360248201527210da19595cd954ddd85c0e8811561412549151606a1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116d5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061170b5750886001600160a01b0316816001600160a01b0316145b61175c576040805162461bcd60e51b815260206004820152601d60248201527f436865657365537761703a20494e56414c49445f5349474e4154555245000000604482015290519081900360640190fd5b611767898989611d05565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117db576040805162461bcd60e51b815260206004820152601260248201527110da19595cd954ddd85c0e881313d0d2d15160721b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118eb926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182c57600080fd5b505afa158015611840573d6000803e3d6000fd5b505050506040513d602081101561185657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d60208110156118cd57600080fd5b50516008546001600160701b0380821691600160701b900416611b3f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061199f5780518252601f199092019160209182019101611980565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a01576040519150601f19603f3d011682016040523d82523d6000602084013e611a06565b606091505b5091509150818015611a34575080511580611a345750808060200190516020811015611a3157600080fd5b50515b611a85576040805162461bcd60e51b815260206004820152601b60248201527f436865657365537761703a205452414e534645525f4641494c45440000000000604482015290519081900360640190fd5b5050505050565b6000811580611aa757505080820282828281611aa457fe5b04145b610b66576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b66576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b5d57506001600160701b038311155b611ba5576040805162461bcd60e51b8152602060048201526014602482015273436865657365537761703a204f564552464c4f5760601b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bd557506001600160701b03841615155b8015611be957506001600160701b03831615155b15611c5a578063ffffffff16611c1785611c028661211d565b6001600160e01b03169063ffffffff61212f16565b600980546001600160e01b03929092169290920201905563ffffffff8116611c4284611c028761211d565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d90908263ffffffff611aef16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611dc5908263ffffffff61215416565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7257600080fd5b505afa158015611e86573d6000803e3d6000fd5b505050506040513d6020811015611e9c57600080fd5b5051600b546001600160a01b038216158015945091925090611f6b578015611f66576000611edf610ea26001600160701b0388811690881663ffffffff611a8c16565b90506000611eec83611f7f565b905080821115611f63576000611f1a611f0b848463ffffffff611aef16565b6000549063ffffffff611a8c16565b90506000611f3f83611f3386600363ffffffff611a8c16565b9063ffffffff61215416565b90506000818381611f4c57fe5b0490508015611f5f57611f5f8782611fd1565b5050505b50505b611f77565b8015611f77576000600b555b505092915050565b60006003821115611fc2575080600160028204015b81811015611fbc57809150600281828581611fab57fe5b040181611fb457fe5b049050611f94565b50611fcc565b8115611fcc575060015b919050565b600054611fe4908263ffffffff61215416565b60009081556001600160a01b03831681526001602052604090205461200f908263ffffffff61215416565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106120765781612078565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120a8908263ffffffff611aef16565b6001600160a01b038316600090815260016020526040812091909155546120d5908263ffffffff611aef16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161214c57fe5b049392505050565b80820182811015610b66576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe436865657365537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544436865657365537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544436865657365537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54436865657365537761703a20494e53554646494349454e545f4c4951554944495459436865657365537761703a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a723158207412320f4cb3b32872c7002da5362f60f725d28331630297c8630a1106d3e8a064736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

10420:9704:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10420:9704:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17635:1896;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17635:1896:0;;;;;;;;-1:-1:-1;;;;;17635:1896:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;17635:1896:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17635:1896: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;17635:1896:0;;-1:-1:-1;17635:1896:0;-1:-1:-1;17635:1896:0;:::i;:::-;;4953:46;;;:::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;4953:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11445:231;;;:::i;:::-;;;;-1:-1:-1;;;;;11445:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7007:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7007:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10733:21;;;:::i;:::-;;;;-1:-1:-1;;;;;10733:21:0;;;;;;;;;;;;;;5098:24;;;:::i;:::-;;;;;;;;;;;;;;;;7309:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7309:301:0;;;;;;;;;;;;;;;;;:::i;5390:108::-;;;:::i;5056:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5247:31;;;:::i;12506:211::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12506:211:0;;;;;;;;;;:::i;11084:32::-;;;:::i;11123:::-;;;:::i;14703:1241::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14703:1241:0;-1:-1:-1;;;;;14703:1241:0;;:::i;5129:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5129:41:0;-1:-1:-1;;;;;5129:41:0;;:::i;11162:17::-;;;:::i;5505:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5505:38:0;-1:-1:-1;;;;;5505:38:0;;:::i;16056:1467::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16056:1467:0;-1:-1:-1;;;;;16056:1467:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5006:43;;;:::i;7162:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7162:139:0;;;;;;;;:::i;10554:46::-;;;:::i;19580:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19580:334:0;-1:-1:-1;;;;;19580:334:0;;:::i;10704:22::-;;;:::i;10761:21::-;;;:::i;7618:676::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7618:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5177:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5177:61:0;;;;;;;;;;:::i;19963:158::-;;;:::i;17635:1896::-;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;17749:14;;;;:32;;;17780:1;17767:10;:14;17749:32;17741:83;;;;-1:-1:-1;;;17741:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17836:17;17855;17877:13;:11;:13::i;:::-;17835:55;;;;;17937:9;-1:-1:-1;;;;;17924:22:0;:10;:22;:48;;;;;17963:9;-1:-1:-1;;;;;17950:22:0;:10;:22;17924:48;17916:95;;;;-1:-1:-1;;;17916:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18156:6;;18191;;18024:13;;;;-1:-1:-1;;;;;18156:6:0;;;;18191;;;;18216:13;;;;;;;:30;;;18239:7;-1:-1:-1;;;;;18233:13:0;:2;-1:-1:-1;;;;;18233:13:0;;;18216:30;18208:65;;;;;-1:-1:-1;;;18208:65:0;;;;;;;;;;;;-1:-1:-1;;;18208:65:0;;;;;;;;;;;;;;;18288:14;;18284:58;;18304:38;18318:7;18327:2;18331:10;18304:13;:38::i;:::-;18391:14;;18387:58;;18407:38;18421:7;18430:2;18434:10;18407:13;:38::i;:::-;18494:15;;18490:99;;18529:2;-1:-1:-1;;;;;18511:36:0;;18548:10;18560;18572;18584:4;;18511:78;;;;;;;;;;;;;-1:-1:-1;;;;;18511:78:0;-1:-1:-1;;;;;18511:78: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;;18511:78:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18511:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18511:78:0;;;;18490:99;18611:40;;;-1:-1:-1;;;18611:40:0;;18645:4;18611:40;;;;;;-1:-1:-1;;;;;18611:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18611:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18611:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18611:40:0;18673;;;-1:-1:-1;;;18673:40:0;;18707:4;18673:40;;;;;;18611;;-1:-1:-1;;;;;;18673:25:0;;;;;:40;;;;;18611;;18673;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18673:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18673:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18673:40:0;;-1:-1:-1;18735:14:0;;-1:-1:-1;;;;;;;18763:22:0;;;;;18752:33;;:75;;18826:1;18752:75;;;18812:10;18800:9;-1:-1:-1;;;;;18800:22:0;;18788:8;:35;18752:75;18735:92;;18838:14;18878:10;18866:9;-1:-1:-1;;;;;18866:22:0;;18855:8;:33;:75;;18929:1;18855:75;;;18915:10;18903:9;-1:-1:-1;;;;;18903:22:0;;18891:8;:35;18855:75;18838:92;;18961:1;18949:9;:13;:30;;;;18978:1;18966:9;:13;18949:30;18941:80;;;;-1:-1:-1;;;18941:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19107:21;19131:40;19154:16;:9;19168:1;19154:16;:13;:16;:::i;:::-;19131:18;:8;19144:4;19131:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;19107:64;-1:-1:-1;19182:21:0;19206:40;19229:16;:9;19243:1;19229:16;:13;:16;:::i;19206:40::-;19182:64;-1:-1:-1;19307:43:0;19342:7;19307:30;-1:-1:-1;;;;;19307:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;19265:38;:16;19286;19265:38;:20;:38;:::i;:::-;:85;;19257:111;;;;;-1:-1:-1;;;19257:111:0;;;;;;;;;;;;-1:-1:-1;;;19257:111:0;;;;;;;;;;;;;;;11405:1;;19392:49;19400:8;19410;19420:9;19431;19392:7;:49::i;:::-;19457:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19457:66:0;;;19462:10;;19457:66;;;;;;;;;-1:-1:-1;;11428:1:0;11417:8;:12;-1:-1:-1;;;;;;;;;17635:1896:0:o;4953:46::-;;;;;;;;;;;;;;-1:-1:-1;;;4953:46:0;;;;:::o;11445:231::-;11578:8;;-1:-1:-1;;;;;11578:8:0;;;;-1:-1:-1;;;11609:8:0;;;;;;-1:-1:-1;;;11650:18:0;;;;;11445:231::o;7007:147::-;7071:4;7088:36;7097:10;7109:7;7118:5;7088:8;:36::i;:::-;-1:-1:-1;7142:4:0;7007:147;;;;;:::o;10733:21::-;;;-1:-1:-1;;;;;10733:21:0;;:::o;5098:24::-;;;;:::o;7309:301::-;-1:-1:-1;;;;;7408:15:0;;7387:4;7408:15;;;:9;:15;;;;;;;;7424:10;7408:27;;;;;;;;-1:-1:-1;;7408:39:0;7404:140;;-1:-1:-1;;;;;7494:15:0;;;;;;:9;:15;;;;;;;;7510:10;7494:27;;;;;;;;:38;;7526:5;7494:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7464:15:0;;;;;;:9;:15;;;;;;;;7480:10;7464:27;;;;;;;:68;7404:140;7554:26;7564:4;7570:2;7574:5;7554:9;:26::i;:::-;-1:-1:-1;7598:4:0;7309:301;;;;;:::o;5390:108::-;5432:66;5390:108;:::o;5056:35::-;5089:2;5056:35;:::o;5247:31::-;;;;:::o;12506:211::-;12602:7;;-1:-1:-1;;;;;12602:7:0;12588:10;:21;12580:55;;;;;-1:-1:-1;;;12580:55:0;;;;;;;;;;;;-1:-1:-1;;;12580:55:0;;;;;;;;;;;;;;;12666:6;:16;;-1:-1:-1;;;;;12666:16:0;;;-1:-1:-1;;;;;;12666:16:0;;;;;;;12693:6;:16;;;;;;;;;;;12506:211::o;11084:32::-;;;;:::o;11123:::-;;;;:::o;14703:1241::-;14752:14;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;;;11393:1;14821:13;:11;:13::i;:::-;-1:-1:-1;14883:6:0;;14876:39;;;-1:-1:-1;;;14876:39:0;;14909:4;14876:39;;;;;;14779:55;;-1:-1:-1;14779:55:0;;-1:-1:-1;14860:13:0;;-1:-1:-1;;;;;14883:6:0;;;;14876:24;;:39;;;;;;;;;;;;;;14883:6;14876:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14876:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14876:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14876:39:0;14949:6;;14942:39;;;-1:-1:-1;;;14942:39:0;;14975:4;14942:39;;;;;;14876;;-1:-1:-1;14926:13:0;;-1:-1:-1;;;;;14949:6:0;;;;14942:24;;:39;;;;;14876;;14942;;;;;;;;14949:6;14942:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14942:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14942:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14942:39:0;;-1:-1:-1;14992:12:0;15007:23;:8;-1:-1:-1;;;;;15007:23:0;;;:12;:23;:::i;:::-;14992:38;-1:-1:-1;15041:12:0;15056:23;:8;-1:-1:-1;;;;;15056:23:0;;;:12;:23;:::i;:::-;15041:38;;15092:10;15105:30;15114:9;15125;15105:8;:30::i;:::-;15146:17;15166:11;15092:43;;-1:-1:-1;15270:17:0;15266:352;;15316:54;10595:5;15316:31;15326:20;:7;15338;15326:20;:11;:20;:::i;:::-;15316:9;:31::i;:54::-;15304:66;;15384:36;15398:1;10595:5;15384;:36::i;:::-;15266:352;;;15520:86;-1:-1:-1;;;;;15529:37:0;;:25;:7;15541:12;15529:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;15568:37:0;;:25;:7;15580:12;15568:25;:11;:25;:::i;:::-;:37;;;;;;15520:8;:86::i;:::-;15508:98;;15266:352;15648:1;15636:9;:13;15628:67;;;;-1:-1:-1;;;15628:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15706:20;15712:2;15716:9;15706:5;:20::i;:::-;15739:49;15747:8;15757;15767:9;15778;15739:7;:49::i;:::-;15803:5;15799:47;;;15837:8;;15818:28;;-1:-1:-1;;;;;15823:8:0;;;;-1:-1:-1;;;15837:8:0;;;15818:28;:18;:28;:::i;:::-;15810:5;:36;15799:47;15902:34;;;;;;;;;;;;;;15907:10;;15902:34;;;;;;;;-1:-1:-1;;11428:1:0;11417:8;:12;-1:-1:-1;14703:1241:0;;;-1:-1:-1;;;;;;14703:1241:0:o;5129:41::-;;;;;;;;;;;;;:::o;11162:17::-;;;;:::o;5505:38::-;;;;;;;;;;;;;:::o;16056:1467::-;16105:12;16119;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;;;11393:1;16186:13;:11;:13::i;:::-;-1:-1:-1;16243:6:0;;16324;;16403:40;;;-1:-1:-1;;;16403:40:0;;16437:4;16403:40;;;;;;16144:55;;-1:-1:-1;16144:55:0;;-1:-1:-1;;;;;;16243:6:0;;;;16324;;;16225:15;;16243:6;;16403:25;;:40;;;;;;;;;;;;;;16243:6;16403:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16403:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16403:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16403:40:0;16470;;;-1:-1:-1;;;16470:40:0;;16504:4;16470:40;;;;;;16403;;-1:-1:-1;16454:13:0;;-1:-1:-1;;;;;16470:25:0;;;;;:40;;;;;16403;;16470;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16470:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16470:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16470:40:0;16556:4;16521:14;16538:24;;;:9;16470:40;16538:24;;;;;16470:40;;-1:-1:-1;16588:30:0;16597:9;16608;16588:8;:30::i;:::-;16629:17;16649:11;16575:43;;-1:-1:-1;16649:11:0;16759:23;:9;16773:8;16759:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;16892:12:0;16866:23;:9;16880:8;16866:23;:13;:23;:::i;:::-;:38;;;;;;16856:48;;16981:1;16971:7;:11;:26;;;;;16996:1;16986:7;:11;16971:26;16963:80;;;;-1:-1:-1;;;16963:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:31;17068:4;17075:9;17054:5;:31::i;:::-;17096:35;17110:7;17119:2;17123:7;17096:13;:35::i;:::-;17142;17156:7;17165:2;17169:7;17142:13;:35::i;:::-;17199:40;;;-1:-1:-1;;;17199:40:0;;17233:4;17199:40;;;;;;-1:-1:-1;;;;;17199:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17199:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17199:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17199:40:0;17261;;;-1:-1:-1;;;17261:40:0;;17295:4;17261:40;;;;;;17199;;-1:-1:-1;;;;;;17261:25:0;;;;;:40;;;;;17199;;17261;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17261:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17261:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17261:40:0;;-1:-1:-1;17314:49:0;17322:8;17261:40;17342:9;17353;17314:7;:49::i;:::-;17378:5;17374:47;;;17412:8;;17393:28;;-1:-1:-1;;;;;17398:8:0;;;;-1:-1:-1;;;17412:8:0;;;17393:28;:18;:28;:::i;:::-;17385:5;:36;17374:47;17477:38;;;;;;;;;;;;;;-1:-1:-1;;;;;17477:38:0;;;17482:10;;17477:38;;;;;;;;;;;11405:1;;;;;;;;;11428;11417:8;:12;;;;16056:1467;;;:::o;5006:43::-;;;;;;;;;;;;;;-1:-1:-1;;;5006:43:0;;;;:::o;7162:139::-;7222:4;7239:32;7249:10;7261:2;7265:5;7239:9;:32::i;10554:46::-;10595:5;10554:46;:::o;19580:334::-;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;19649:6;;19699;;19803:8;;19758:40;;;-1:-1:-1;;;19758:40:0;;19792:4;19758:40;;;;;;-1:-1:-1;;;;;19649:6:0;;;;19699;;;;19731:82;;19649:6;;19754:2;;19758:54;;-1:-1:-1;;;;;19803:8:0;;19649:6;;19758:25;;:40;;;;;;;;;;;;;;;19649:6;19758:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19758:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19758:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19758:40:0;;:54;:44;:54;:::i;:::-;19731:13;:82::i;:::-;19896:8;;19851:40;;;-1:-1:-1;;;19851:40:0;;19885:4;19851:40;;;;;;19824:82;;19838:7;;19847:2;;19851:54;;-1:-1:-1;;;19896:8:0;;-1:-1:-1;;;;;19896:8:0;;-1:-1:-1;;;;;19851:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;19824:82:0;-1:-1:-1;;11428:1:0;11417:8;:12;-1:-1:-1;19580:334:0:o;10704:22::-;;;-1:-1:-1;;;;;10704:22:0;;:::o;10761:21::-;;;-1:-1:-1;;;;;10761:21:0;;:::o;7618:676::-;7764:15;7752:8;:27;;7744:59;;;;;-1:-1:-1;;;7744:59:0;;;;;;;;;;;;-1:-1:-1;;;7744:59:0;;;;;;;;;;;;;;;7919:16;;-1:-1:-1;;;;;8015:13:0;;;7814:14;8015:13;;;:6;:13;;;;;;;;:15;;;;;;;;;7964:77;;5432:66;7964:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7964:77:0;;;;;7954:88;;;;;;-1:-1:-1;;;7855:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7855:202:0;;;;;;7831:237;;;;;;;;;8106:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7814:14;;8015:15;8106:26;;;;;-1:-1:-1;;8106:26:0;;;;;;;;;;8015:15;8106:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8106:26:0;;-1:-1:-1;;8106:26:0;;;-1:-1:-1;;;;;;;8151:30:0;;;;;;:59;;;8205:5;-1:-1:-1;;;;;8185:25:0;:16;-1:-1:-1;;;;;8185:25:0;;8151:59;8143:101;;;;;-1:-1:-1;;;8143:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8255:31;8264:5;8271:7;8280:5;8255:8;:31::i;:::-;7618:676;;;;;;;;;:::o;5177:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;19963:158::-;11335:8;;11347:1;11335:13;11327:44;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;-1:-1:-1;;;11327:44:0;;;;;;;;;;;;;;;11393:1;11382:8;:12;20019:6;;20012:39;;;-1:-1:-1;;;20012:39:0;;20045:4;20012:39;;;;;;20004:109;;-1:-1:-1;;;;;20019:6:0;;20012:24;;:39;;;;;;;;;;;;;;20019:6;20012:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20012:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20012:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20012:39:0;20060:6;;20053:39;;;-1:-1:-1;;;20053:39:0;;20086:4;20053:39;;;;;;-1:-1:-1;;;;;20060:6:0;;;;20053:24;;:39;;;;;20012;;20053;;;;;;;;20060:6;20053:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20053:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20053:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20053:39:0;20094:8;;-1:-1:-1;;;;;20094:8:0;;;;-1:-1:-1;;;20104:8:0;;;20004:7;:109::i;:::-;11428:1;11417:8;:12;19963:158::o;11684:288::-;10659:34;;;;;;;;;;;;;;;;;11812:43;;-1:-1:-1;;;;;11812:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11812:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11801:55:0;;;;11766:12;;11780:17;;11801:10;;;11812:43;11801:55;;;25:18:-1;11801: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;;;11801: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;;11765:91:0;;;;11875:7;:57;;;;-1:-1:-1;11887:11:0;;:16;;:44;;;11918:4;11907:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11907:24:0;11887:44;11867:97;;;;;-1:-1:-1;;;11867:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11684:288;;;;;:::o;4720:142::-;4772:6;4799;;;:30;;-1:-1:-1;;4814:5:0;;;4828:1;4823;4814:5;4823:1;4809:15;;;;;:20;4799:30;4791:63;;;;;-1:-1:-1;;;4791:63:0;;;;;;;;;;;;-1:-1:-1;;;4791:63:0;;;;;;;;;;;;;;4583:129;4667:5;;;4662:16;;;;4654:50;;;;;-1:-1:-1;;;4654:50:0;;;;;;;;;;;;-1:-1:-1;;;4654:50:0;;;;;;;;;;;;;;12802:861;-1:-1:-1;;;;;12914:23:0;;;;;:50;;-1:-1:-1;;;;;;12941:23:0;;;12914:50;12906:83;;;;;-1:-1:-1;;;12906:83:0;;;;;;;;;;;;-1:-1:-1;;;12906:83:0;;;;;;;;;;;;;;;13104:18;;13031:23;:15;:23;;;-1:-1:-1;;;13104:18:0;;;;13087:35;;;13160:15;;;;;;:33;;-1:-1:-1;;;;;;13179:14:0;;;;13160:33;:51;;;;-1:-1:-1;;;;;;13197:14:0;;;;13160:51;13156:336;;;13366:11;13313:64;;13318:44;13352:9;13318:27;13335:9;13318:16;:27::i;:::-;-1:-1:-1;;;;;13318:33:0;;:44;:33;:44;:::i;:::-;13289:20;:88;;-1:-1:-1;;;;;13313:50:0;;;;:64;;;;13289:88;;;13416:64;;;13421:44;13455:9;13421:27;13438:9;13421:16;:27::i;:44::-;13392:20;:88;;-1:-1:-1;;;;;13416:50:0;;;;:64;;;;13392:88;;;13156:336;13502:8;:28;;-1:-1:-1;;13502:28:0;-1:-1:-1;;;;;13502:28:0;;;;;;;-1:-1:-1;;;;13541:28:0;-1:-1:-1;;;13541:28:0;;;;;;;;;-1:-1:-1;;;;;13580:35:0;-1:-1:-1;;;13580:35:0;;;;;;;;;13631:24;;;13636:8;;;13631:24;;13646:8;;;;;;;13631:24;;;;;;;;;;;;;;;;;12802:861;;;;;;:::o;6602:169::-;-1:-1:-1;;;;;6683:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6732:31;;;;;;;;;;;;;;;;;6602:169;;;:::o;6779:220::-;-1:-1:-1;;;;;6873:15:0;;;;;;:9;:15;;;;;;:26;;6893:5;6873:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6855:15:0;;;;;;;:9;:15;;;;;;:44;;;;6926:13;;;;;;;:24;;6944:5;6926:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6910:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;6966:25;;;;;;;6910:13;;6966:25;;;;;;;;;;;;;6779:220;;;:::o;13753:838::-;13826:10;13849:13;13884:7;;;;;;;;;-1:-1:-1;;;;;13884:7:0;-1:-1:-1;;;;;13865:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13865:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13865:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13865:35:0;13963:5;;-1:-1:-1;;;;;13919:19:0;;;;;;-1:-1:-1;13865:35:0;;-1:-1:-1;13963:5:0;13994:590;;14024:11;;14020:494;;14056:10;14069:41;14079:30;-1:-1:-1;;;;;14079:15:0;;;;:30;;;:19;:30;:::i;14069:41::-;14056:54;;14129:14;14146:17;14156:6;14146:9;:17::i;:::-;14129:34;;14194:9;14186:5;:17;14182:317;;;14228:14;14245:37;14261:20;:5;14271:9;14261:20;:9;:20;:::i;:::-;14245:11;;;:37;:15;:37;:::i;:::-;14228:54;-1:-1:-1;14305:16:0;14324:27;14341:9;14324:12;:5;14334:1;14324:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;14305:46;;14374:14;14403:11;14391:9;:23;;;;;;;-1:-1:-1;14441:13:0;;14437:42;;14456:23;14462:5;14469:9;14456:5;:23::i;:::-;14182:317;;;;14020:494;;;13994:590;;;14535:11;;14531:53;;14571:1;14563:5;:9;14531:53;13753:838;;;;;;:::o;8588:303::-;8633:6;8660:1;8656;:5;8652:232;;;-1:-1:-1;8682:1:0;8715;8711;8707:5;;:9;8731:92;8742:1;8738;:5;8731:92;;;8768:1;8764:5;;8806:1;8801;8797;8793;:5;;;;;;:9;8792:15;;;;;;8788:19;;8731:92;;;8652:232;;;;8844:6;;8840:44;;-1:-1:-1;8871:1:0;8840:44;8588:303;;;:::o;6176:201::-;6249:11;;:22;;6265:5;6249:22;:15;:22;:::i;:::-;6235:11;:36;;;-1:-1:-1;;;;;6298:13:0;;;;:9;:13;;;;;;:24;;6316:5;6298:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6282:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6338:31;;;;;;;6282:13;;;;6338:31;;;;;;;;;;6176:201;;:::o;8374:96::-;8426:6;8453:1;8449;:5;:13;;8461:1;8449:13;;;8457:1;8449:13;8445:17;8374:96;-1:-1:-1;;;8374:96:0:o;6385:209::-;-1:-1:-1;;;;;6464:15:0;;;;;;:9;:15;;;;;;:26;;6484:5;6464:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6446:15:0;;;;;;:9;:15;;;;;:44;;;;6515:11;:22;;6531:5;6515:22;:15;:22;:::i;:::-;6501:11;:36;;;6553:33;;;;;;;;-1:-1:-1;;;;;6553:33:0;;;;;;;;;;;;;6385:209;;:::o;9160:120::-;-1:-1:-1;;;;;9236:10:0;-1:-1:-1;;;9236:17:0;;9160:120::o;9351:108::-;9411:9;-1:-1:-1;;;;;9441:10:0;;-1:-1:-1;;;;;9437:14:0;;9441:10;9437:14;;;;;;9351:108;-1:-1:-1;;;9351:108:0:o;4447:128::-;4531:5;;;4526:16;;;;4518:49;;;;;-1:-1:-1;;;4518:49:0;;;;;;;;;;;;-1:-1:-1;;;4518:49:0;;;;;;;;;;;;;

Swarm Source

bzzr://7412320f4cb3b32872c7002da5362f60f725d28331630297c8630a1106d3e8a0
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.