Contract 0xc24ad5197daefd97df28c70acbdf17d9ff92a49b

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x13b1de0ff9439b21c6e4d90fa80e9b25d412688a36547435fa775ba0616c177283175312021-06-15 11:52:567 mins ago0x48cc063c39cc990342eda738c3172beae440c218 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x4e3fcd4b79dba1082604c7aa01a9c624f12b870d44de2a29393d9bfd412640db83174772021-06-15 11:50:149 mins ago0x8b01881e67d8f20c1b53a66e3daf0f0a7f99cf60 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x0abb96c44e8b3b087540218695e7aa848a9e546b41d23a947daf3984b32faaa683172512021-06-15 11:38:4721 mins ago0x9e1543eb7df6369d0b0edcd258f348af86f88678 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0xa4f923c218e9dd6acc721af887513e9d21ef29f878b6e1597786f3db7947ee3783172282021-06-15 11:37:3822 mins ago0x0c1721951f12cf6fdb13152cd981a36d4bad2ceb IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x60630b48ea9332769f8ca8b5be8fbf22e5123a7d3d2037682901396e297c114283171912021-06-15 11:35:4724 mins ago0xaaddb46181c10e8030418f43407c64a32e9e81b6 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0xaf8c54e9abad4fcb11533eee33fb43beabd7c599faf5047aab95ad69ab11596683171552021-06-15 11:33:5926 mins ago0x404d66951f5ab2229980986b754690eb416e2da5 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0xb1fbeb7e8025715a858d4ac259f9ecdfbdb9e49ada6aa517d62eb25708abdcb983170612021-06-15 11:29:1730 mins ago0xf666bbc5251cf4a1f7f000f01faff6c17d7eebc6 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0xfe495b1123ff18af267aeb445b56c9f5388183731ff54d7035e32bd83232c36d83169822021-06-15 11:25:2034 mins ago0x837438b2676c61068a33eb7da838c18a921bc288 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x3fe59f262f9108f6685349e0cb00c07121fde27f1971b6b390fc4e813f58a0e183169522021-06-15 11:23:5036 mins ago0x837438b2676c61068a33eb7da838c18a921bc288 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x6f8c26f2668330a7a4d9adbf0fa96ac81083a65b6a0173cec71059bba7e2cb0883168042021-06-15 11:16:2343 mins ago0x3f41a3fd3fc865204b65d73f16ff9e89799d6002 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0xe4898e91a10ce7e9849e1e2dc66e61ef69d4e9ce356debfc561a0c7fbdb6d96c83167632021-06-15 11:14:2045 mins ago0x01c95dba0e5deb61479e3faa19e98d74d973f410 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221595
0x77bd228d7e372eeb3f5d95546c8645a183a36d1b4884e2d975765b968f44db0683166882021-06-15 11:10:3549 mins ago0x5d6c47cfdbbe5ad5a7be0a97d519164d303e1117 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x87ef25bef601aa292dfa74b7a77eecb25ee66bdb24760ed7ac706790e0245cd483165962021-06-15 11:05:5954 mins ago0x9651e22a95e9d507fadb5c1c0db0d45acb128d16 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x870d8974c80121b191bfbb07bea9f387c7f13513f25305a6b4b4cd4c2fb9bcca83165532021-06-15 11:03:5056 mins ago0x3c110f33141b7bb72b166403a4427b9c20052211 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.00007237
0x222ae57a50371bf9863ad20285c3745b74eec4f5c53160b399d16cce6bde3f1083164462021-06-15 10:58:291 hr 1 min ago0x5b00cd35cd7506e4fdf5e3f69bee2092313b49c2 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x2925b674773ea42d327897ed16303b5e3dfc67eff1c8fd3a4f58b0298940174183162402021-06-15 10:47:301 hr 12 mins ago0x61dd6c12615cbd9074798698d2e8e6d0fb5df3af IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0xc1d874f6b335d836b0f7a8fa46cfa620bb1b5c4d904c1be589ab0461eca7905a83161682021-06-15 10:43:221 hr 16 mins ago0x66eb8bd2784d3ba39c7e6fecffdb8676b295a42d IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000265914
0xf302a65e689ea47a96e375cb0f1feb76060e78e58e11e0a59bd92efed04ba26983158172021-06-15 10:25:171 hr 34 mins ago0x2a86dcbbd725ef7c734dfc03b804a72f06bb2a37 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000220275
0x9c9a66d99004830672bf5ab91b68eb8e18e737e376717884a6d210214d2beb9183155992021-06-15 10:13:211 hr 46 mins ago0xb8b88ac4781f699e730cda61c1131f564bcb110b IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x0193533e37a924e0a511fe4d35471f363d108cdcb4a24688c818db4317f455ea83155762021-06-15 10:12:081 hr 47 mins ago0x0f06b032122327fa79c3bd9ed419bf6eaf24b4a4 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x76ca1f832145d9376a4a4b7bbf77adcefe1fc8c7333b043ddee6e51cafa454fe83153202021-06-15 9:59:202 hrs ago0xa70001c99576c4cbf3e014cba8c32fdc5db6b7b6 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000220275
0x83cec792c61fa0068cb2398faec54e9b79706b4e70644ab57b552bc02e4941bf83152732021-06-15 9:56:412 hrs 3 mins ago0x3c110f33141b7bb72b166403a4427b9c20052211 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000220275
0xf794fe89f70aa21623c41ce33d13c7e44fc119d5151d4f3a20c945eee2da85df83151652021-06-15 9:51:002 hrs 9 mins ago0xcf5128a30f21dec6570e5e5ffa969493a033bba7 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221655
0x64edc58d29cc0bf34bc0f8950b20bd815710dccd997439196ca70792cc87ed1a83150672021-06-15 9:45:552 hrs 14 mins ago0x4cd4253a427b45d1b00afce5f9d79a5f309f9bed IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000221595
0xf069731122ffb6f9636f948c0954ea79ad64963768fda6dfdca197c2c723613a83147882021-06-15 9:31:522 hrs 28 mins ago0xc325396eb51709fe0a10538d53ac42e6372fa980 IN  0xc24ad5197daefd97df28c70acbdf17d9ff92a49b0 BNB0.000220275
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x8a2f4a991e1bf783ca119eb319a03cdea9c5851ef639cd004fe8c21c0c7a9d2672344112021-05-08 5:56:0538 days 6 hrs ago 0x670f55c6284c629c23bae99f585e3f17e8b9fc31  Contract Creation0 BNB
[ Download CSV Export 
Loading

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

Contract Name:
PantherPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 50 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-05-06
*/

// File: contracts/interfaces/IPantherPair.sol

pragma solidity >=0.5.0;

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

// File: contracts/interfaces/IPantherERC20.sol

pragma solidity >=0.5.0;

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

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

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

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

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

// File: contracts/libraries/SafeMath.sol

pragma solidity =0.5.16;

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

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

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

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

// File: contracts/PantherERC20.sol

pragma solidity =0.5.16;



contract PantherERC20 is IPantherERC20 {
    using SafeMath for uint;

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

// File: contracts/libraries/Math.sol

pragma solidity =0.5.16;

// a library for performing various math operations

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

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

// File: contracts/libraries/UQ112x112.sol

pragma solidity =0.5.16;

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

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

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

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

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

// File: contracts/interfaces/IERC20.sol

pragma solidity >=0.5.0;

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

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

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

// File: contracts/interfaces/IPantherFactory.sol

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

// File: contracts/interfaces/IPantherCallee.sol

pragma solidity >=0.5.0;

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

// File: contracts/PantherPair.sol

pragma solidity =0.5.16;








contract PantherPair is IPantherPair, PantherERC20 {
    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, 'Panther: 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))), 'Panther: 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, 'Panther: 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), 'Panther: 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 = IPantherFactory(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, 'Panther: 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, 'Panther: 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, 'Panther: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Panther: 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, 'Panther: 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) IPantherCallee(to).pantherCall(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, 'Panther: 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), 'Panther: 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"}]

60806040526001600c5534801561001557600080fd5b5060405146908060526122eb8239604080519182900360520182208282018252600f83526e50616e7468657253776170204c507360881b6020938401528151808301835260018152603160f81b908401528151808401919091527f69bb3a9d7a21f882d7b39a5c5f3ffb4798d9a9e04931bcedbcc1e77ae2da791f818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b031916331790556121e18061010a6000396000f3fe608060405234801561001057600080fd5b50600436106101595760003560e01c80636a627842116100c95780636a627842146103bf57806370a08231146103e55780637464fc3d1461040b5780637ecebe001461041357806389afcb441461043957806395d89b4114610478578063a9059cbb14610480578063ba9a7a56146104ac578063bc25cf77146104b4578063c45a0155146104da578063d21220a7146104e2578063d505accf146104ea578063dd62ed3e1461053b578063fff6cae91461056957610159565b8063022c0d9f1461015e57806306fdde03146101ea5780630902f1ac14610267578063095ea7b31461029f5780630dfe1681146102df57806318160ddd1461030357806323b872dd1461031d57806330adf81f14610353578063313ce5671461035b5780633644e51514610379578063485cc955146103815780635909c0d5146103af5780635a3d5493146103b7575b600080fd5b6101e86004803603608081101561017457600080fd5b8135916020810135916001600160a01b036040830135169190810190608081016060820135600160201b8111156101aa57600080fd5b8201836020820111156101bc57600080fd5b803590602001918460018302840111600160201b831117156101dd57600080fd5b509092509050610571565b005b6101f2610abc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f610ae7565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102cb600480360360408110156102b557600080fd5b506001600160a01b038135169060200135610b11565b604080519115158252519081900360200190f35b6102e7610b28565b604080516001600160a01b039092168252519081900360200190f35b61030b610b37565b60408051918252519081900360200190f35b6102cb6004803603606081101561033357600080fd5b506001600160a01b03813581169160208101359091169060400135610b3d565b61030b610bd7565b610363610bfb565b6040805160ff9092168252519081900360200190f35b61030b610c00565b6101e86004803603604081101561039757600080fd5b506001600160a01b0381358116916020013516610c06565b61030b610c88565b61030b610c8e565b61030b600480360360208110156103d557600080fd5b50356001600160a01b0316610c94565b61030b600480360360208110156103fb57600080fd5b50356001600160a01b0316610f92565b61030b610fa4565b61030b6004803603602081101561042957600080fd5b50356001600160a01b0316610faa565b61045f6004803603602081101561044f57600080fd5b50356001600160a01b0316610fbc565b6040805192835260208301919091528051918290030190f35b6101f2611360565b6102cb6004803603604081101561049657600080fd5b506001600160a01b038135169060200135611386565b61030b611393565b6101e8600480360360208110156104ca57600080fd5b50356001600160a01b0316611399565b6102e7611502565b6102e7611511565b6101e8600480360360e081101561050057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611520565b61030b6004803603604081101561055157600080fd5b506001600160a01b038135811691602001351661171d565b6101e861173a565b600c546001146105ba576040805162461bcd60e51b815260206004820152600f60248201526e14185b9d1a195c8e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55841515806105cd5750600084115b6106085760405162461bcd60e51b81526004018080602001828103825260238152602001806120fc6023913960400191505060405180910390fd5b600080610613610ae7565b5091509150816001600160701b0316871080156106385750806001600160701b031686105b610689576040805162461bcd60e51b815260206004820152601f60248201527f50616e746865723a20494e53554646494349454e545f4c495155494449545900604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906106c75750806001600160a01b0316896001600160a01b031614155b61070e576040805162461bcd60e51b815260206004820152601360248201527250616e746865723a20494e56414c49445f544f60681b604482015290519081900360640190fd5b8a1561071f5761071f828a8d61189a565b891561073057610730818a8c61189a565b86156107eb57886001600160a01b0316631c8f37b3338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156107d257600080fd5b505af11580156107e6573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561083157600080fd5b505afa158015610845573d6000803e3d6000fd5b505050506040513d602081101561085b57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108a757600080fd5b505afa1580156108bb573d6000803e3d6000fd5b505050506040513d60208110156108d157600080fd5b5051925060009150506001600160701b0385168a900383116108f4576000610903565b89856001600160701b03160383035b9050600089856001600160701b031603831161092057600061092f565b89856001600160701b03160383035b905060008211806109405750600081115b61097b5760405162461bcd60e51b815260040180806020018281038252602281526020018061211f6022913960400191505060405180910390fd5b60006109af61099184600263ffffffff611a2b16565b6109a3876103e863ffffffff611a2b16565b9063ffffffff611a8e16565b905060006109c761099184600263ffffffff611a2b16565b90506109f8620f42406109ec6001600160701b038b8116908b1663ffffffff611a2b16565b9063ffffffff611a2b16565b610a08838363ffffffff611a2b16565b1015610a48576040805162461bcd60e51b815260206004820152600a60248201526950616e746865723a204b60b01b604482015290519081900360640190fd5b5050610a5684848888611ade565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600f81526020016e50616e7468657253776170204c507360881b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b1e338484611c93565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bc2576001600160a01b0384166000908152600260209081526040808320338452909152902054610b9d908363ffffffff611a8e16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bcd848484611cf5565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c5a576040805162461bcd60e51b81526020600482015260126024820152712830b73a3432b91d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cdf576040805162461bcd60e51b815260206004820152600f60248201526e14185b9d1a195c8e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580610cef610ae7565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d6020811015610d6d57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dc057600080fd5b505afa158015610dd4573d6000803e3d6000fd5b505050506040513d6020811015610dea57600080fd5b505190506000610e09836001600160701b03871663ffffffff611a8e16565b90506000610e26836001600160701b03871663ffffffff611a8e16565b90506000610e348787611d9d565b60005490915080610e7157610e5d6103e86109a3610e58878763ffffffff611a2b16565b611efb565b9850610e6c60006103e8611f4d565b610ec0565b610ebd6001600160701b038916610e8e868463ffffffff611a2b16565b81610e9557fe5b046001600160701b038916610eb0868563ffffffff611a2b16565b81610eb757fe5b04611fd1565b98505b60008911610eff5760405162461bcd60e51b81526004018080602001828103825260268152602001806121876026913960400191505060405180910390fd5b610f098a8a611f4d565b610f1586868a8a611ade565b8115610f4557600854610f41906001600160701b0380821691600160701b90041663ffffffff611a2b16565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611008576040805162461bcd60e51b815260206004820152600f60248201526e14185b9d1a195c8e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580611018610ae7565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561107457600080fd5b505afa158015611088573d6000803e3d6000fd5b505050506040513d602081101561109e57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051306000908152600160205260408120549192506111358888611d9d565b6000549091508061114c848763ffffffff611a2b16565b8161115357fe5b049a5080611167848663ffffffff611a2b16565b8161116e57fe5b04995060008b118015611181575060008a115b6111bc5760405162461bcd60e51b81526004018080602001828103825260268152602001806121616026913960400191505060405180910390fd5b6111c63084611fe9565b6111d1878d8d61189a565b6111dc868d8c61189a565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561122257600080fd5b505afa158015611236573d6000803e3d6000fd5b505050506040513d602081101561124c57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561129857600080fd5b505afa1580156112ac573d6000803e3d6000fd5b505050506040513d60208110156112c257600080fd5b505193506112d285858b8b611ade565b8115611302576008546112fe906001600160701b0380821691600160701b90041663ffffffff611a2b16565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600a815260200169050414e544845522d4c560b41b81525081565b6000610b1e338484611cf5565b6103e881565b600c546001146113e2576040805162461bcd60e51b815260206004820152600f60248201526e14185b9d1a195c8e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611491928592879261148c926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561145457600080fd5b505afa158015611468573d6000803e3d6000fd5b505050506040513d602081101561147e57600080fd5b50519063ffffffff611a8e16565b61189a565b600854604080516370a0823160e01b815230600482015290516114f8928492879261148c92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561145457600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611568576040805162461bcd60e51b815260206004820152601060248201526f14185b9d1a195c8e881156141254915160821b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611683573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116b95750886001600160a01b0316816001600160a01b0316145b611707576040805162461bcd60e51b815260206004820152601a60248201527950616e746865723a20494e56414c49445f5349474e415455524560301b604482015290519081900360640190fd5b611712898989611c93565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611783576040805162461bcd60e51b815260206004820152600f60248201526e14185b9d1a195c8e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611893926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117d457600080fd5b505afa1580156117e8573d6000803e3d6000fd5b505050506040513d60208110156117fe57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d602081101561187557600080fd5b50516008546001600160701b0380821691600160701b900416611ade565b6001600c55565b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119435780518252601f199092019160209182019101611924565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119a5576040519150601f19603f3d011682016040523d82523d6000602084013e6119aa565b606091505b50915091508180156119d85750805115806119d857508080602001905160208110156119d557600080fd5b50515b611a24576040805162461bcd60e51b815260206004820152601860248201527714185b9d1a195c8e881514905394d1915497d1905253115160421b604482015290519081900360640190fd5b5050505050565b6000811580611a4657505080820282828281611a4357fe5b04145b610b22576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b22576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611afc57506001600160701b038311155b611b41576040805162461bcd60e51b815260206004820152601160248201527050616e746865723a204f564552464c4f5760781b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b7157506001600160701b03841615155b8015611b8557506001600160701b03831615155b15611bf6578063ffffffff16611bb385611b9e86612075565b6001600160e01b03169063ffffffff61208716565b600980546001600160e01b03929092169290920201905563ffffffff8116611bde84611b9e87612075565b600a80546001600160e01b0392909216929092020190555b600880546001600160701b0319166001600160701b0388811691909117600160701b600160e01b031916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d1e908263ffffffff611a8e16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d53908263ffffffff6120ac16565b6001600160a01b03808416600081815260016020908152604091829020949094558051858152905191939287169260008051602061214183398151915292918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611dee57600080fd5b505afa158015611e02573d6000803e3d6000fd5b505050506040513d6020811015611e1857600080fd5b5051600b546001600160a01b038216158015945091925090611ee7578015611ee2576000611e5b610e586001600160701b0388811690881663ffffffff611a2b16565b90506000611e6883611efb565b905080821115611edf576000611e96611e87848463ffffffff611a8e16565b6000549063ffffffff611a2b16565b90506000611ebb83611eaf86600363ffffffff611a2b16565b9063ffffffff6120ac16565b90506000818381611ec857fe5b0490508015611edb57611edb8782611f4d565b5050505b50505b611ef3565b8015611ef3576000600b555b505092915050565b60006003821115611f3e575080600160028204015b81811015611f3857809150600281828581611f2757fe5b040181611f3057fe5b049050611f10565b50611f48565b8115611f48575060015b919050565b600054611f60908263ffffffff6120ac16565b60009081556001600160a01b038316815260016020526040902054611f8b908263ffffffff6120ac16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391926000805160206121418339815191529281900390910190a35050565b6000818310611fe05781611fe2565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612012908263ffffffff611a8e16565b6001600160a01b0383166000908152600160205260408120919091555461203f908263ffffffff611a8e16565b60009081556040805183815290516001600160a01b03851691600080516020612141833981519152919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b038416816120a457fe5b049392505050565b80820182811015610b22576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe50616e746865723a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e746865723a20494e53554646494349454e545f494e5055545f414d4f554e54ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef50616e746865723a20494e53554646494349454e545f4c49515549444954595f4255524e454450616e746865723a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a723158200635678b85636109383df64477b17b5d4b55a3851b8be9067d6b724652b286bb64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11093:9698:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11093:9698:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18279:1919;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18279:1919:0;;;;;;;;-1:-1:-1;;;;;18279:1919:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18279:1919:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18279:1919:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;18279:1919:0;;-1:-1:-1;18279:1919:0;-1:-1:-1;18279:1919:0;:::i;:::-;;4524:47;;;:::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;4524:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12106:231;;;:::i;:::-;;;;-1:-1:-1;;;;;12106:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6580:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6580:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11397:21;;;:::i;:::-;;;;-1:-1:-1;;;;;11397:21:0;;;;;;;;;;;;;;4671:24;;;:::i;:::-;;;;;;;;;;;;;;;;6882:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6882:301:0;;;;;;;;;;;;;;;;;:::i;4963:108::-;;;:::i;4629:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4820:31;;;:::i;13164:208::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13164:208:0;;;;;;;;;;:::i;11748:32::-;;;:::i;11787:::-;;;:::i;15352:1239::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15352:1239:0;-1:-1:-1;;;;;15352:1239:0;;:::i;4702:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4702:41:0;-1:-1:-1;;;;;4702:41:0;;:::i;11826:17::-;;;:::i;5078:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5078:38:0;-1:-1:-1;;;;;5078:38:0;;:::i;16703:1464::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16703:1464:0;-1:-1:-1;;;;;16703:1464:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4578:44;;;:::i;6735:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6735:139:0;;;;;;;;:::i;11218:46::-;;;:::i;20247:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20247:334:0;-1:-1:-1;;;;;20247:334:0;;:::i;11368:22::-;;;:::i;11425:21::-;;;:::i;7191:670::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7191:670:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4750:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4750:61:0;;;;;;;;;;:::i;20630:158::-;;;:::i;18279:1919::-;11999:8;;12011:1;11999:13;11991:41;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;;;;12054:1;12043:8;:12;18393:14;;;;:32;;;18424:1;18411:10;:14;18393:32;18385:80;;;;-1:-1:-1;;;18385:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18477:17;18496;18518:13;:11;:13::i;:::-;18476:55;;;;;18578:9;-1:-1:-1;;;;;18565:22:0;:10;:22;:48;;;;;18604:9;-1:-1:-1;;;;;18591:22:0;:10;:22;18565:48;18557:92;;;;;-1:-1:-1;;;18557:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18798:6;;18837;;18662:13;;;;-1:-1:-1;;;;;18798:6:0;;;;18837;;;;18866:13;;;;;;;:30;;;18889:7;-1:-1:-1;;;;;18883:13:0;:2;-1:-1:-1;;;;;18883:13:0;;;18866:30;18858:62;;;;;-1:-1:-1;;;18858:62:0;;;;;;;;;;;;-1:-1:-1;;;18858:62:0;;;;;;;;;;;;;;;18939:14;;18935:58;;18955:38;18969:7;18978:2;18982:10;18955:13;:38::i;:::-;19046:14;;19042:58;;19062:38;19076:7;19085:2;19089:10;19062:13;:38::i;:::-;19153:15;;19149:93;;19185:2;-1:-1:-1;;;;;19170:30:0;;19201:10;19213;19225;19237:4;;19170:72;;;;;;;;;;;;;-1:-1:-1;;;;;19170:72:0;-1:-1:-1;;;;;19170:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19170:72:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19170:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19170:72:0;;;;19149:93;19268:40;;;-1:-1:-1;;;19268:40:0;;19302:4;19268:40;;;;;;-1:-1:-1;;;;;19268:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19268:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19268:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19268:40:0;19334;;;-1:-1:-1;;;19334:40:0;;19368:4;19334:40;;;;;;19268;;-1:-1:-1;;;;;;19334:25:0;;;;;:40;;;;;19268;;19334;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19334:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19334:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19334:40:0;;-1:-1:-1;19396:14:0;;-1:-1:-1;;;;;;;19424:22:0;;;;;19413:33;;:75;;19487:1;19413:75;;;19473:10;19461:9;-1:-1:-1;;;;;19461:22:0;;19449:8;:35;19413:75;19396:92;;19499:14;19539:10;19527:9;-1:-1:-1;;;;;19527:22:0;;19516:8;:33;:75;;19590:1;19516:75;;;19576:10;19564:9;-1:-1:-1;;;;;19564:22:0;;19552:8;:35;19516:75;19499:92;;19622:1;19610:9;:13;:30;;;;19639:1;19627:9;:13;19610:30;19602:77;;;;-1:-1:-1;;;19602:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19769:21;19793:40;19816:16;:9;19830:1;19816:16;:13;:16;:::i;:::-;19793:18;:8;19806:4;19793:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;19769:64;-1:-1:-1;19848:21:0;19872:40;19895:16;:9;19909:1;19895:16;:13;:16;:::i;19872:40::-;19848:64;-1:-1:-1;19977:43:0;20012:7;19977:30;-1:-1:-1;;;;;19977:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;19935:38;:16;19956;19935:38;:20;:38;:::i;:::-;:85;;19927:108;;;;;-1:-1:-1;;;19927:108:0;;;;;;;;;;;;-1:-1:-1;;;19927:108:0;;;;;;;;;;;;;;;12066:1;;20059:49;20067:8;20077;20087:9;20098;20059:7;:49::i;:::-;20124:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20124:66:0;;;20129:10;;20124:66;;;;;;;;;-1:-1:-1;;12089:1:0;12078:8;:12;-1:-1:-1;;;;;;;;;18279:1919:0:o;4524:47::-;;;;;;;;;;;;;;-1:-1:-1;;;4524:47:0;;;;:::o;12106:231::-;12239:8;;-1:-1:-1;;;;;12239:8:0;;;;-1:-1:-1;;;12270:8:0;;;;;;-1:-1:-1;;;12311:18:0;;;;;12106:231::o;6580:147::-;6644:4;6661:36;6670:10;6682:7;6691:5;6661:8;:36::i;:::-;-1:-1:-1;6715:4:0;6580:147;;;;;:::o;11397:21::-;;;-1:-1:-1;;;;;11397:21:0;;:::o;4671:24::-;;;;:::o;6882:301::-;-1:-1:-1;;;;;6981:15:0;;6960:4;6981:15;;;:9;:15;;;;;;;;6997:10;6981:27;;;;;;;;-1:-1:-1;;6981:39:0;6977:140;;-1:-1:-1;;;;;7067:15:0;;;;;;:9;:15;;;;;;;;7083:10;7067:27;;;;;;;;:38;;7099:5;7067:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7037:15:0;;;;;;:9;:15;;;;;;;;7053:10;7037:27;;;;;;;:68;6977:140;7127:26;7137:4;7143:2;7147:5;7127:9;:26::i;:::-;-1:-1:-1;7171:4:0;6882:301;;;;;:::o;4963:108::-;5005:66;4963:108;:::o;4629:35::-;4662:2;4629:35;:::o;4820:31::-;;;;:::o;13164:208::-;13260:7;;-1:-1:-1;;;;;13260:7:0;13246:10;:21;13238:52;;;;;-1:-1:-1;;;13238:52:0;;;;;;;;;;;;-1:-1:-1;;;13238:52:0;;;;;;;;;;;;;;;13321:6;:16;;-1:-1:-1;;;;;13321:16:0;;;-1:-1:-1;;;;;;13321:16:0;;;;;;;13348:6;:16;;;;;;;;;;;13164:208::o;11748:32::-;;;;:::o;11787:::-;;;;:::o;15352:1239::-;15401:14;11999:8;;12011:1;11999:13;11991:41;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;;;;12054:1;12043:8;:12;;;12054:1;15470:13;:11;:13::i;:::-;-1:-1:-1;15532:6:0;;15525:39;;;-1:-1:-1;;;15525:39:0;;15558:4;15525:39;;;;;;15428:55;;-1:-1:-1;15428:55:0;;-1:-1:-1;15509:13:0;;-1:-1:-1;;;;;15532:6:0;;;;15525:24;;:39;;;;;;;;;;;;;;15532:6;15525:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15525:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15525:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15525:39:0;15598:6;;15591:39;;;-1:-1:-1;;;15591:39:0;;15624:4;15591:39;;;;;;15525;;-1:-1:-1;15575:13:0;;-1:-1:-1;;;;;15598:6:0;;;;15591:24;;:39;;;;;15525;;15591;;;;;;;;15598:6;15591:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15591:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15591:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15591:39:0;;-1:-1:-1;15641:12:0;15656:23;:8;-1:-1:-1;;;;;15656:23:0;;;:12;:23;:::i;:::-;15641:38;-1:-1:-1;15690:12:0;15705:23;:8;-1:-1:-1;;;;;15705:23:0;;;:12;:23;:::i;:::-;15690:38;;15741:10;15754:30;15763:9;15774;15754:8;:30::i;:::-;15795:17;15815:11;15741:43;;-1:-1:-1;15919:17:0;15915:353;;15965:54;11259:5;15965:31;15975:20;:7;15987;15975:20;:11;:20;:::i;:::-;15965:9;:31::i;:54::-;15953:66;;16034:36;16048:1;11259:5;16034;:36::i;:::-;15915:353;;;16170:86;-1:-1:-1;;;;;16179:37:0;;:25;:7;16191:12;16179:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;16218:37:0;;:25;:7;16230:12;16218:25;:11;:25;:::i;:::-;:37;;;;;;16170:8;:86::i;:::-;16158:98;;15915:353;16298:1;16286:9;:13;16278:64;;;;-1:-1:-1;;;16278:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16353:20;16359:2;16363:9;16353:5;:20::i;:::-;16386:49;16394:8;16404;16414:9;16425;16386:7;:49::i;:::-;16450:5;16446:47;;;16484:8;;16465:28;;-1:-1:-1;;;;;16470:8:0;;;;-1:-1:-1;;;16484:8:0;;;16465:28;:18;:28;:::i;:::-;16457:5;:36;16446:47;16549:34;;;;;;;;;;;;;;16554:10;;16549:34;;;;;;;;-1:-1:-1;;12089:1:0;12078:8;:12;-1:-1:-1;15352:1239:0;;;-1:-1:-1;;;;;;15352:1239:0:o;4702:41::-;;;;;;;;;;;;;:::o;11826:17::-;;;;:::o;5078:38::-;;;;;;;;;;;;;:::o;16703:1464::-;16752:12;16766;11999:8;;12011:1;11999:13;11991:41;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;;;;12054:1;12043:8;:12;;;12054:1;16833:13;:11;:13::i;:::-;-1:-1:-1;16890:6:0;;16971;;17050:40;;;-1:-1:-1;;;17050:40:0;;17084:4;17050:40;;;;;;16791:55;;-1:-1:-1;16791:55:0;;-1:-1:-1;;;;;;16890:6:0;;;;16971;;;16872:15;;16890:6;;17050:25;;:40;;;;;;;;;;;;;;16890:6;17050:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17050:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17050:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17050:40:0;17117;;;-1:-1:-1;;;17117:40:0;;17151:4;17117:40;;;;;;17050;;-1:-1:-1;17101:13:0;;-1:-1:-1;;;;;17117:25:0;;;;;:40;;;;;17050;;17117;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17117:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17117:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17117:40:0;17203:4;17168:14;17185:24;;;:9;17117:40;17185:24;;;;;17117:40;;-1:-1:-1;17235:30:0;17244:9;17255;17235:8;:30::i;:::-;17276:17;17296:11;17222:43;;-1:-1:-1;17296:11:0;17406:23;:9;17420:8;17406:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;17539:12:0;17513:23;:9;17527:8;17513:23;:13;:23;:::i;:::-;:38;;;;;;17503:48;;17628:1;17618:7;:11;:26;;;;;17643:1;17633:7;:11;17618:26;17610:77;;;;-1:-1:-1;;;17610:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17698:31;17712:4;17719:9;17698:5;:31::i;:::-;17740:35;17754:7;17763:2;17767:7;17740:13;:35::i;:::-;17786;17800:7;17809:2;17813:7;17786:13;:35::i;:::-;17843:40;;;-1:-1:-1;;;17843:40:0;;17877:4;17843:40;;;;;;-1:-1:-1;;;;;17843:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17843:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17843:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17843:40:0;17905;;;-1:-1:-1;;;17905:40:0;;17939:4;17905:40;;;;;;17843;;-1:-1:-1;;;;;;17905:25:0;;;;;:40;;;;;17843;;17905;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17905:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17905:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17905:40:0;;-1:-1:-1;17958:49:0;17966:8;17905:40;17986:9;17997;17958:7;:49::i;:::-;18022:5;18018:47;;;18056:8;;18037:28;;-1:-1:-1;;;;;18042:8:0;;;;-1:-1:-1;;;18056:8:0;;;18037:28;:18;:28;:::i;:::-;18029:5;:36;18018:47;18121:38;;;;;;;;;;;;;;-1:-1:-1;;;;;18121:38:0;;;18126:10;;18121:38;;;;;;;;;;;12066:1;;;;;;;;;12089;12078:8;:12;;;;16703:1464;;;:::o;4578:44::-;;;;;;;;;;;;;;-1:-1:-1;;;4578:44:0;;;;:::o;6735:139::-;6795:4;6812:32;6822:10;6834:2;6838:5;6812:9;:32::i;11218:46::-;11259:5;11218:46;:::o;20247:334::-;11999:8;;12011:1;11999:13;11991:41;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;;;;12054:1;12043:8;:12;20316:6;;20366;;20470:8;;20425:40;;;-1:-1:-1;;;20425:40:0;;20459:4;20425:40;;;;;;-1:-1:-1;;;;;20316:6:0;;;;20366;;;;20398:82;;20316:6;;20421:2;;20425:54;;-1:-1:-1;;;;;20470:8:0;;20316:6;;20425:25;;:40;;;;;;;;;;;;;;;20316:6;20425:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20425:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20425:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20425:40:0;;:54;:44;:54;:::i;:::-;20398:13;:82::i;:::-;20563:8;;20518:40;;;-1:-1:-1;;;20518:40:0;;20552:4;20518:40;;;;;;20491:82;;20505:7;;20514:2;;20518:54;;-1:-1:-1;;;20563:8:0;;-1:-1:-1;;;;;20563:8:0;;-1:-1:-1;;;;;20518:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;20491:82:0;-1:-1:-1;;12089:1:0;12078:8;:12;-1:-1:-1;20247:334:0:o;11368:22::-;;;-1:-1:-1;;;;;11368:22:0;;:::o;11425:21::-;;;-1:-1:-1;;;;;11425:21:0;;:::o;7191:670::-;7337:15;7325:8;:27;;7317:56;;;;;-1:-1:-1;;;7317:56:0;;;;;;;;;;;;-1:-1:-1;;;7317:56:0;;;;;;;;;;;;;;;7489:16;;-1:-1:-1;;;;;7585:13:0;;;7384:14;7585:13;;;:6;:13;;;;;;;;:15;;;;;;;;;7534:77;;5005:66;7534:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7534:77:0;;;;;7524:88;;;;;;-1:-1:-1;;;7425:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7425:202:0;;;;;;7401:237;;;;;;;;;7676:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7384:14;;7585:15;7676:26;;;;;-1:-1:-1;;7676:26:0;;;;;;;;;;7585:15;7676:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7676:26:0;;-1:-1:-1;;7676:26:0;;;-1:-1:-1;;;;;;;7721:30:0;;;;;;:59;;;7775:5;-1:-1:-1;;;;;7755:25:0;:16;-1:-1:-1;;;;;7755:25:0;;7721:59;7713:98;;;;;-1:-1:-1;;;7713:98:0;;;;;;;;;;;;-1:-1:-1;;;7713:98:0;;;;;;;;;;;;;;;7822:31;7831:5;7838:7;7847:5;7822:8;:31::i;:::-;7191:670;;;;;;;;;:::o;4750:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20630:158::-;11999:8;;12011:1;11999:13;11991:41;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;-1:-1:-1;;;11991:41:0;;;;;;;;;;;;;;;12054:1;12043:8;:12;20686:6;;20679:39;;;-1:-1:-1;;;20679:39:0;;20712:4;20679:39;;;;;;20671:109;;-1:-1:-1;;;;;20686:6:0;;20679:24;;:39;;;;;;;;;;;;;;20686:6;20679:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20679:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20679:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20679:39:0;20727:6;;20720:39;;;-1:-1:-1;;;20720:39:0;;20753:4;20720:39;;;;;;-1:-1:-1;;;;;20727:6:0;;;;20720:24;;:39;;;;;20679;;20720;;;;;;;;20727:6;20720:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20720:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20720:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20720:39:0;20761:8;;-1:-1:-1;;;;;20761:8:0;;;;-1:-1:-1;;;20771:8:0;;;20671:7;:109::i;:::-;12089:1;12078:8;:12;20630:158::o;12345:285::-;11323:34;;;;;;;;;;;-1:-1:-1;;;11323:34:0;;;;;12473:43;;-1:-1:-1;;;;;12473:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12473:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12462:55:0;;;;12427:12;;12441:17;;12462:10;;;12473:43;12462:55;;;25:18:-1;12462: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;;;12462: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;;12426:91:0;;;;12536:7;:57;;;;-1:-1:-1;12548:11:0;;:16;;:44;;;12579:4;12568:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12568:24:0;12548:44;12528:94;;;;;-1:-1:-1;;;12528:94:0;;;;;;;;;;;;-1:-1:-1;;;12528:94:0;;;;;;;;;;;;;;;12345:285;;;;;:::o;4226:142::-;4278:6;4305;;;:30;;-1:-1:-1;;4320:5:0;;;4334:1;4329;4320:5;4329:1;4315:15;;;;;:20;4305:30;4297:63;;;;;-1:-1:-1;;;4297:63:0;;;;;;;;;;;;-1:-1:-1;;;4297:63:0;;;;;;;;;;;;;;4089:129;4173:5;;;4168:16;;;;4160:50;;;;;-1:-1:-1;;;4160:50:0;;;;;;;;;;;;-1:-1:-1;;;4160:50:0;;;;;;;;;;;;;;13457:858;-1:-1:-1;;;;;13569:23:0;;;;;:50;;-1:-1:-1;;;;;;13596:23:0;;;13569:50;13561:80;;;;;-1:-1:-1;;;13561:80:0;;;;;;;;;;;;-1:-1:-1;;;13561:80:0;;;;;;;;;;;;;;;13756:18;;13683:23;:15;:23;;;-1:-1:-1;;;13756:18:0;;;;13739:35;;;13812:15;;;;;;:33;;-1:-1:-1;;;;;;13831:14:0;;;;13812:33;:51;;;;-1:-1:-1;;;;;;13849:14:0;;;;13812:51;13808:336;;;14018:11;13965:64;;13970:44;14004:9;13970:27;13987:9;13970:16;:27::i;:::-;-1:-1:-1;;;;;13970:33:0;;:44;:33;:44;:::i;:::-;13941:20;:88;;-1:-1:-1;;;;;13965:50:0;;;;:64;;;;13941:88;;;14068:64;;;14073:44;14107:9;14073:27;14090:9;14073:16;:27::i;:44::-;14044:20;:88;;-1:-1:-1;;;;;14068:50:0;;;;:64;;;;14044:88;;;13808:336;14154:8;:28;;-1:-1:-1;;;;;;14154:28:0;-1:-1:-1;;;;;14154:28:0;;;;;;;-1:-1:-1;;;;;;;;14193:28:0;-1:-1:-1;;;14193:28:0;;;;;;;;;-1:-1:-1;;;;;14232:35:0;-1:-1:-1;;;14232:35:0;;;;;;;;;14283:24;;;14288:8;;;14283:24;;14298:8;;;;;;;14283:24;;;;;;;;;;;;;;;;;13457:858;;;;;;:::o;6175:169::-;-1:-1:-1;;;;;6256:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6305:31;;;;;;;;;;;;;;;;;6175:169;;;:::o;6352:220::-;-1:-1:-1;;;;;6446:15:0;;;;;;:9;:15;;;;;;:26;;6466:5;6446:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6428:15:0;;;;;;;:9;:15;;;;;;:44;;;;6499:13;;;;;;;:24;;6517:5;6499:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6483:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;6539:25;;;;;;;6483:13;;6539:25;;;;-1:-1:-1;;;;;;;;;;;6539:25:0;;;;;;;;6352:220;;;:::o;14405:835::-;14478:10;14501:13;14533:7;;;;;;;;;-1:-1:-1;;;;;14533:7:0;-1:-1:-1;;;;;14517:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14517:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14517:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14517:32:0;14612:5;;-1:-1:-1;;;;;14568:19:0;;;;;;-1:-1:-1;14517:32:0;;-1:-1:-1;14612:5:0;14643:590;;14673:11;;14669:494;;14705:10;14718:41;14728:30;-1:-1:-1;;;;;14728:15:0;;;;:30;;;:19;:30;:::i;14718:41::-;14705:54;;14778:14;14795:17;14805:6;14795:9;:17::i;:::-;14778:34;;14843:9;14835:5;:17;14831:317;;;14877:14;14894:37;14910:20;:5;14920:9;14910:20;:9;:20;:::i;:::-;14894:11;;;:37;:15;:37;:::i;:::-;14877:54;-1:-1:-1;14954:16:0;14973:27;14990:9;14973:12;:5;14983:1;14973:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;14954:46;;15023:14;15052:11;15040:9;:23;;;;;;;-1:-1:-1;15090:13:0;;15086:42;;15105:23;15111:5;15118:9;15105:5;:23::i;:::-;14831:317;;;;14669:494;;;14643:590;;;15184:11;;15180:53;;15220:1;15212:5;:9;15180:53;14405:835;;;;;;:::o;8226:303::-;8271:6;8298:1;8294;:5;8290:232;;;-1:-1:-1;8320:1:0;8353;8349;8345:5;;:9;8369:92;8380:1;8376;:5;8369:92;;;8406:1;8402:5;;8444:1;8439;8435;8431;:5;;;;;;:9;8430:15;;;;;;8426:19;;8369:92;;;8290:232;;;;8482:6;;8478:44;;-1:-1:-1;8509:1:0;8478:44;8226:303;;;:::o;5749:201::-;5822:11;;:22;;5838:5;5822:22;:15;:22;:::i;:::-;5808:11;:36;;;-1:-1:-1;;;;;5871:13:0;;;;:9;:13;;;;;;:24;;5889:5;5871:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;5855:13:0;;;;;;:9;:13;;;;;;;;:40;;;;5911:31;;;;;;;5855:13;;;;-1:-1:-1;;;;;;;;;;;5911:31:0;;;;;;;;;5749:201;;:::o;8012:96::-;8064:6;8091:1;8087;:5;:13;;8099:1;8087:13;;;8095:1;8087:13;8083:17;8012:96;-1:-1:-1;;;8012:96:0:o;5958:209::-;-1:-1:-1;;;;;6037:15:0;;;;;;:9;:15;;;;;;:26;;6057:5;6037:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6019:15:0;;;;;;:9;:15;;;;;:44;;;;6088:11;:22;;6104:5;6088:22;:15;:22;:::i;:::-;6074:11;:36;;;6126:33;;;;;;;;-1:-1:-1;;;;;6126:33:0;;;-1:-1:-1;;;;;;;;;;;6126:33:0;;;;;;;;;5958:209;;:::o;8876:120::-;-1:-1:-1;;;;;8952:10:0;-1:-1:-1;;;8952:17:0;;8876:120::o;9067:108::-;9127:9;-1:-1:-1;;;;;9157:10:0;;-1:-1:-1;;;;;9153:14:0;;9157:10;9153:14;;;;;;9067:108;-1:-1:-1;;;9067:108:0:o;3953:128::-;4037:5;;;4032:16;;;;4024:49;;;;;-1:-1:-1;;;4024:49:0;;;;;;;;;;;;-1:-1:-1;;;4024:49:0;;;;;;;;;;;;;

Swarm Source

bzzr://0635678b85636109383df64477b17b5d4b55a3851b8be9067d6b724652b286bb
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.