Contract 0xcf33801d538c7895c4405d13e801af6f3c6fcef8 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe469b92013431f2d7ff89fd9b420e9e783adcc6b985d4a7c5d13206b377d7f78Approve111198772021-09-21 22:43:257 days 3 hrs ago0x6b679d0bb9d11cf24b1bc46b1e1b79351ceb2f46 IN  CheeseSwap: HOTS-WBNB0 BNB0.000072395
0xbaea3b99368cdeeba11dc7180096b35f7f428999a5b58df530c41ee7f3579fd3Approve105155882021-08-31 19:29:1428 days 7 hrs ago0x919b02df679947663f903d4b77a779add443297f IN  CheeseSwap: HOTS-WBNB0 BNB0.000072395
0xbcd345922de07f29b550b58ed113da87ed6eabd9bad0504df89371219fa36933Approve87622612021-07-01 0:39:4090 days 1 hr ago0x616a5652951cbe6b62913936ab829ec4f5b011b6 IN  CheeseSwap: HOTS-WBNB0 BNB0.000072395
0x7cf36d26d10a524e7221befd8830356e1602a927a0cf514e3924391328c8127eApprove78079342021-05-28 17:16:29123 days 9 hrs ago0x187495a91c77ff317f240912e3f738b1c8b45f03 IN  CheeseSwap: HOTS-WBNB0 BNB0.000072395
0x4246388902b5eb538d375f1c4b63dfd915c27a202da385d5afbc661473f0cf26Approve75114522021-05-18 8:37:04133 days 17 hrs ago0xb426d0cf0d7ac78e534c1279b8d2adce8dd1e7f0 IN  CheeseSwap: HOTS-WBNB0 BNB0.000072395
0xd4b1bb21c064d89929b0115e61c941f71e94a0a87fdb32dde829b7269ac83260Approve70572772021-05-01 23:45:09150 days 2 hrs ago0x2a0a467d5c547e8598d610bf4dd6921da658c375 IN  CheeseSwap: HOTS-WBNB0 BNB0.00012385
0xad74941bf1747e7efaf687d205d590e7fa55b000516707bc0ed82df87e24d52dApprove68793002021-04-25 18:04:29156 days 8 hrs ago0xfc5e30052f19594fee4fcd9fd4a0955587b81427 IN  CheeseSwap: HOTS-WBNB0 BNB0.000266124
0x2ed8d063b5a216e668edf6208f457507cc8c8a908d51102a9ed37a415ddc5442Approve67267152021-04-20 9:07:59161 days 17 hrs ago0x022842262010a1133fd7882dc165d4fc63a4c8d2 IN  CheeseSwap: HOTS-WBNB0 BNB0.00012385
0x366ba80c769627e1948436b9e5dddbec97ad47a597159199289320aef7e38aebApprove67266842021-04-20 9:06:26161 days 17 hrs ago0x022842262010a1133fd7882dc165d4fc63a4c8d2 IN  CheeseSwap: HOTS-WBNB0 BNB0.000072425
0xa0d7c6ab0630673c57fa2c56905216bf2f990a527119f24328552b6e12c4154eApprove63192802021-04-06 2:44:13175 days 23 hrs ago0xd2050719ea37325bdb6c18a85f6c442221811fac IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x72ff0d33c63b77a060c2a61c48cd9f77011f4508733bb7a7a1e7093dbdf0c040Approve62765792021-04-04 14:26:25177 days 12 hrs ago0xe5985f82f87050188e5c986f829765aab04b4ac6 IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x304e8efb4a7c7f1d4efd345f35c860681a53c1a9f75d4b15e34cf9c7c8f7aeebApprove62685672021-04-04 7:31:51177 days 18 hrs ago0x919b02df679947663f903d4b77a779add443297f IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x3ccf34bd67ee00de7461b1a33116413ff6239b9f71e354a862e881dbff57e759Approve61398412021-03-30 19:27:00182 days 7 hrs ago0x993e41b8cc8b7449ca33466b77aeb774e868410d IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x4f8d60bd6ddb67d84af3b15ddb77853d1c682e7b1444648c5933ca63cd98c808Approve61274732021-03-30 9:05:46182 days 17 hrs ago0xdd60d7a0aae6bc8fed1aaef49cd8d66fa4d815e0 IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x0756a67f0695b3a5d77cb6ca44d4a2a40392efaf7ef81b805a05d2389452ab24Approve59422802021-03-23 21:23:29189 days 5 hrs ago0x67cbf1a88d181249031b88242afe4125af42c79e IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0xa3bd9fe04f2d7e805b3af41a49df2d6201645e7427c82a5b63b45df129211157Approve59084972021-03-22 17:04:26190 days 9 hrs ago0xeddea0cf20e3831ba92594ca43828d2ab192a0a4 IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0xeac5631b49ae50aab90c714f15467ffb4b3153c891e74dadc1b0d122b6e13e5dApprove58974562021-03-22 7:34:54190 days 18 hrs ago0xc77c3efb55bd7b0e44c13eb27eb33c98597f0a68 IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x24bcbafb733f7e3ebc754e3ff1fb1364adb821587a5fe2281168d907f1cde4f8Approve58713222021-03-21 9:47:13191 days 16 hrs ago0xe1a8feb2fef185da91c59bbc2f4eb4a163a7434f IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x56bc2caa9d829409b70f7019b4c1e533a96caa74091c352a01f0d022002e5144Approve58590762021-03-20 23:33:21192 days 2 hrs ago0x2e4968a4d5461d106d662a442f46df6ed699f22b IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x97f6c9586c0a15e188b767d417e10b1b1b9386cc1f40933cea16d5834aa73834Approve58420692021-03-20 9:22:22192 days 17 hrs ago0x022842262010a1133fd7882dc165d4fc63a4c8d2 IN  CheeseSwap: HOTS-WBNB0 BNB0.00044354
0xa7524db2325aa6f955a51090425271d68bd05f4890dec46097398751dd0cb8abApprove58378782021-03-20 5:52:46192 days 20 hrs ago0x022842262010a1133fd7882dc165d4fc63a4c8d2 IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x37b7e184f522a7cd6c8085480f769d4ce2ec64300152c2ee40ef39163cf5c10bTransfer57190062021-03-16 2:42:30196 days 23 hrs ago0x5d259edbcd0732bc55f90611b85abd90025c3de9 IN  CheeseSwap: HOTS-WBNB0 BNB0.00036032
0x30ed356beb7131f4c8894034b1eb2daff1be2127fddb000baeb58c2404aeb71cApprove56658992021-03-14 6:24:24198 days 20 hrs ago0x77fa524520f609b9ebe075d7de219604adfb23ee IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
0x0a05ce72041b73a73250567f5f9e9de880599f1c291c4ded2221fae7201cb012Approve55155862021-03-09 0:53:31204 days 1 hr ago0xa515521f449a9d2ec1830d383b0683fc0a655422 IN  CheeseSwap: HOTS-WBNB0 BNB0.00014479
0x56e29cc9ca4a78d20cf5b7d78d173dd86af9f4404a693dddbd2104aa6c837a3bApprove54768742021-03-07 16:36:39205 days 9 hrs ago0x74bcd4156c4ffa9a41bd1ee1677034a229971afe IN  CheeseSwap: HOTS-WBNB0 BNB0.00044342
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x17edf91502e9aa900bdfe520dbe393a8b8eb41353d1dba9f563277d6b256d13854707112021-03-07 11:28:30205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x17edf91502e9aa900bdfe520dbe393a8b8eb41353d1dba9f563277d6b256d13854707112021-03-07 11:28:30205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x17edf91502e9aa900bdfe520dbe393a8b8eb41353d1dba9f563277d6b256d13854707112021-03-07 11:28:30205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x73b97286a4e3d23f0fad307d97e14f98be75227bca28a2c43aacea3d0d46d12354703712021-03-07 11:11:30205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x73b97286a4e3d23f0fad307d97e14f98be75227bca28a2c43aacea3d0d46d12354703712021-03-07 11:11:30205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x73b97286a4e3d23f0fad307d97e14f98be75227bca28a2c43aacea3d0d46d12354703712021-03-07 11:11:30205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x474474a730905d18b41b55cb91b250411f174b1aa5d1a13d12e934ad2842edda54697382021-03-07 10:39:51205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x474474a730905d18b41b55cb91b250411f174b1aa5d1a13d12e934ad2842edda54697382021-03-07 10:39:51205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x474474a730905d18b41b55cb91b250411f174b1aa5d1a13d12e934ad2842edda54697382021-03-07 10:39:51205 days 15 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0xc46cb2336cd37f55ac5e567db571c4d8a7f11fa8268ef98982d44254fca8da6c54685382021-03-07 9:39:51205 days 16 hrs ago CheeseSwap: HOTS-WBNB Binance: WBNB Token0 BNB
0xc46cb2336cd37f55ac5e567db571c4d8a7f11fa8268ef98982d44254fca8da6c54685382021-03-07 9:39:51205 days 16 hrs ago CheeseSwap: HOTS-WBNB Hotdog Cafe: HOTS Token0 BNB
0xc46cb2336cd37f55ac5e567db571c4d8a7f11fa8268ef98982d44254fca8da6c54685382021-03-07 9:39:51205 days 16 hrs ago CheeseSwap: HOTS-WBNB Binance: WBNB Token0 BNB
0xc46cb2336cd37f55ac5e567db571c4d8a7f11fa8268ef98982d44254fca8da6c54685382021-03-07 9:39:51205 days 16 hrs ago CheeseSwap: Router CheeseSwap: HOTS-WBNB0 BNB
0xc46cb2336cd37f55ac5e567db571c4d8a7f11fa8268ef98982d44254fca8da6c54685382021-03-07 9:39:51205 days 16 hrs ago CheeseSwap: Router CheeseSwap: HOTS-WBNB0 BNB
0x0a066ddcadfa25147ebab75ea727e3958a1c1b5ecf3008c9981d1ce4cccce5bb54680152021-03-07 9:13:42205 days 17 hrs ago CheeseSwap: HOTS-WBNB Binance: WBNB Token0 BNB
0x0a066ddcadfa25147ebab75ea727e3958a1c1b5ecf3008c9981d1ce4cccce5bb54680152021-03-07 9:13:42205 days 17 hrs ago CheeseSwap: HOTS-WBNB Hotdog Cafe: HOTS Token0 BNB
0x0a066ddcadfa25147ebab75ea727e3958a1c1b5ecf3008c9981d1ce4cccce5bb54680152021-03-07 9:13:42205 days 17 hrs ago CheeseSwap: HOTS-WBNB Binance: WBNB Token0 BNB
0x0a066ddcadfa25147ebab75ea727e3958a1c1b5ecf3008c9981d1ce4cccce5bb54680152021-03-07 9:13:42205 days 17 hrs ago CheeseSwap: Router CheeseSwap: HOTS-WBNB0 BNB
0x0a066ddcadfa25147ebab75ea727e3958a1c1b5ecf3008c9981d1ce4cccce5bb54680152021-03-07 9:13:42205 days 17 hrs ago CheeseSwap: Router CheeseSwap: HOTS-WBNB0 BNB
0xe9938fe27d4f404833ae6ad84bca9b173ca74c23258ca4d5e68b4b1e82b35d3b54674262021-03-07 8:44:15205 days 17 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0xe9938fe27d4f404833ae6ad84bca9b173ca74c23258ca4d5e68b4b1e82b35d3b54674262021-03-07 8:44:15205 days 17 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0xe9938fe27d4f404833ae6ad84bca9b173ca74c23258ca4d5e68b4b1e82b35d3b54674262021-03-07 8:44:15205 days 17 hrs ago 0xa168ecc9e8af3d4387857c94e3c436d69aefc4a4 CheeseSwap: HOTS-WBNB0 BNB
0x046d92d807511e067ada0896413bdf328c217384a1da9cf00e6cbf4756bb19dd54672032021-03-07 8:33:06205 days 17 hrs ago CheeseSwap: HOTS-WBNB Binance: WBNB Token0 BNB
0x046d92d807511e067ada0896413bdf328c217384a1da9cf00e6cbf4756bb19dd54672032021-03-07 8:33:06205 days 17 hrs ago CheeseSwap: HOTS-WBNB Hotdog Cafe: HOTS Token0 BNB
0x046d92d807511e067ada0896413bdf328c217384a1da9cf00e6cbf4756bb19dd54672032021-03-07 8:33:06205 days 17 hrs ago CheeseSwap: HOTS-WBNB Binance: WBNB Token0 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 Security Audit

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.