Contract 0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae 6

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5952f31486b3fa103631ceef1e7a499c686069a00ebfd14604b4e12456ddc199Approve121469782021-10-27 22:24:2319 mins ago0xddd50ad4ee6ec97ad42995b9484e8396f46c0d6c IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0xeddd064bdf54b319dcfa30e750795530fe4af40ff4fe4ce8d80c077c9c68c549Approve121464942021-10-27 22:00:1143 mins ago0x438e43c29f45bc0ca6a41b5b72f18247a647f0c7 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x66ba0cebe49aaca68f20bc99ffb55c353dea842d43fff0f6d1b7112144625488Approve121459612021-10-27 21:33:311 hr 10 mins ago0xa3e69abc20186132bb02d5341c4219a942d0647a IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0xd208bdb3f5d938536493fd3f93f6b1e4fc99c4f1260aaeb8ae6f79d3bf44614fApprove121458592021-10-27 21:28:251 hr 15 mins ago0x318384e726fbc7c2d6fb9c500ecb75ba9b11ffa5 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00012621
0x5085455ab6cf789c4be6586d40ce8499cd3600dad8369d920b37e2c6b146944eApprove121458472021-10-27 21:27:491 hr 15 mins ago0x318384e726fbc7c2d6fb9c500ecb75ba9b11ffa5 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x53f72c464aac854ca3aacbca655cff7dce65a6087509db6dc2abc52327c3cbc6Approve121454122021-10-27 21:06:041 hr 37 mins ago0x6ed65aaaba1b403960d6c383a412e96c2e54be62 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0xe97260030a16d0ab6fbe1d738c2ab5f4b78820d9337dc2000df1c7fd7503b1abApprove121453552021-10-27 21:03:131 hr 40 mins ago0x83baaf108c8396460825d3db23172a2dcc76424c IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x6b90d2fd768d655ec8d5cebb2f0b1c2980e1c6db2b30872b9b75b3cba695a130Approve121452402021-10-27 20:57:281 hr 46 mins ago0x8297994b325cf40ee048e32b27da92fb8becb7db IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.000266652
0x71ebff8ff78be8782a36c7dc334dbbdb08487682f2bb6528aa1c255092bfe757Approve121450032021-10-27 20:45:371 hr 58 mins ago0xdbf66cf52791caa30d54aff5769ff6f13202dbcc IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.000174852
0xe19a0e0872c5731fc3cc5eb480d6267b1b744d6d5273da24156b648385731926Approve121449242021-10-27 20:41:402 hrs 2 mins ago0xdbf66cf52791caa30d54aff5769ff6f13202dbcc IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00026442
0x01429c6ba1becb608af6103325fb8b9587848115fe1f5f0611200ebc23707f68Approve121448142021-10-27 20:36:102 hrs 7 mins ago0xc077589845769da153a7c5ff2499ee088df49c79 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x639c09fadb5131358b4288a240bac782d01398fe7a49a23bdf92bfa8773d0b3fApprove121432792021-10-27 19:19:133 hrs 24 mins ago0x7c21632f253e29506bdc5acecafb1fd0c45b3042 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022083
0x909996420dbcc505da1d9cb52d575ab73dad65058c8ad826624a9522116fd4b9Approve121429812021-10-27 19:04:193 hrs 39 mins ago0xd13197978ab69ae553d504e3bc0dc5d58cecdf0c IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.000072645
0x00ba66806725a2bc33e7256513869dcd0a9da96ba27de1f1f3bce9a29a41969cApprove121423712021-10-27 18:33:434 hrs 10 mins ago0x0dd89655c6ee8d660c00667625434b53112bd32e IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x222b97aac4d89e9ef4075a830471debabb6a3153803616ca3777aaf8e388a9ecApprove121422612021-10-27 18:28:134 hrs 15 mins ago0xf42f4d93239ff48fb9963380c48e6ad3f09cba48 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0xc30e3b2ead6b8cd7525be8448592e92b7f9bcf70798128fb21d094cb873f25c3Approve121416632021-10-27 17:58:194 hrs 45 mins ago0x2873d0bcb94e9ef2e240ecd68d569db36d83755c IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x500126057723bd38d0eaeb2caada34ba22bd8063102ad5b7a29364c343006bbaApprove121398202021-10-27 16:26:076 hrs 17 mins ago0x85b2723bb5407266bca2dc88956f3761a990f322 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x4905e83d7ca4fa1dbe7535d1ebc06ebc832133a751d29ff5477c11bd46b5fd54Approve121395112021-10-27 16:10:406 hrs 33 mins ago0xdda8c48390644beae84c5f17d983e5005949dddb IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.000266652
0xbe4a34fcae82f62840eabf6a0162173b59bfee771006bcfafa75d2f6527a440dApprove121380402021-10-27 14:54:307 hrs 49 mins ago0x883d9974a635d0110da994f24b459c249a543934 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x616bd5d5fff4884edfa8cd1d4259d69486d5d5d1231eb6884cc185eb7efc43e7Approve121380042021-10-27 14:52:427 hrs 51 mins ago0xe0fdbfa460d30a3fadb491820bce2bb28e3f7a0c IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x3f8072e95772fc48dff10d17ccce25da92d716a38a6a7f485376da92631c8063Approve121379302021-10-27 14:48:567 hrs 54 mins ago0x528d53898a0ba66bb48046a77883903f8d36261b IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0xb4350bffc497c5396bac354ce12747f10b99a0feaadd462a98d4c4db4d88c528Approve121374792021-10-27 14:25:038 hrs 18 mins ago0x57e5dd55917b9a885195d12f0c1ec5c5079ad45c IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x48065e20b100a52a04279c3b73ee6d6b1e96c91934db93856373656105d9a414Approve121373362021-10-27 14:17:548 hrs 25 mins ago0x1d272c1887728e78412b08fb06450577280dc623 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00012621
0x853ae1aba371f465efc012cf2003eceeea335357211d0a3b44f77199e44d6f45Approve121373052021-10-27 14:16:218 hrs 27 mins ago0x1d272c1887728e78412b08fb06450577280dc623 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
0x451e031786b6c34a99d08472927de537eb4e4f0a746f7565ee5fd07d26112912Approve121370932021-10-27 14:05:148 hrs 38 mins ago0x9eefb4c7bad31d455d99e4dfb935214371a99583 IN  0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae0 BNB0.00022221
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x7669950316d10a8b2549ee0e6d3a16955511ef54dfa53e3db76c895c5ebca32468107802021-04-23 8:47:25187 days 13 hrs ago PancakeSwap: Factory v2  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PancakePair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-09-18
*/

/**
 *Submitted for verification at BscScan.com on 2021-04-23
*/

// File: contracts\interfaces\IPancakePair.sol

pragma solidity >=0.5.0;

interface IPancakePair {
    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\IPancakeERC20.sol

pragma solidity >=0.5.0;

interface IPancakeERC20 {
    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\PancakeERC20.sol

pragma solidity =0.5.16;


contract PancakeERC20 is IPancakeERC20 {
    using SafeMath for uint;

    string public constant name = 'Pancake LPs';
    string public constant symbol = 'Cake-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, 'Pancake: 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, 'Pancake: 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\IPancakeFactory.sol

pragma solidity >=0.5.0;

interface IPancakeFactory {
    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\IPancakeCallee.sol

pragma solidity >=0.5.0;

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

// File: contracts\PancakePair.sol

pragma solidity =0.5.16;







contract PancakePair is IPancakePair, PancakeERC20 {
    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, 'Pancake: 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))), 'Pancake: 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, 'Pancake: 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), 'Pancake: 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 8/25 of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IPancakeFactory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast)).mul(8);
                    uint denominator = rootK.mul(17).add(rootKLast.mul(8));
                    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, 'Pancake: 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, 'Pancake: 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, 'Pancake: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Pancake: 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, 'Pancake: 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) IPancakeCallee(to).pancakeCall(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, 'Pancake: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = (balance0.mul(10000).sub(amount0In.mul(25)));
        uint balance1Adjusted = (balance1.mul(10000).sub(amount1In.mul(25)));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'Pancake: 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"}]

60806040526001600c5534801561001557600080fd5b5060004690506040518080613bfa60529139605201905060405180910390206040518060400160405280600b81526020017f50616e63616b65204c5073000000000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206003819055505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613a85806101756000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146108c4578063d505accf1461090e578063dd62ed3e146109a7578063fff6cae914610a1f576101a9565b8063ba9a7a5614610818578063bc25cf7714610836578063c45a01551461087a576101a9565b80637ecebe00116100d35780637ecebe001461067857806389afcb44146106d057806395d89b411461072f578063a9059cbb146107b2576101a9565b80636a627842146105aa57806370a08231146106025780637464fc3d1461065a576101a9565b806323b872dd116101665780633644e515116101405780633644e515146104ec578063485cc9551461050a5780635909c0d51461056e5780635a3d54931461058c576101a9565b806323b872dd1461042457806330adf81f146104aa578063313ce567146104c8576101a9565b8063022c0d9f146101ae57806306fdde031461025b5780630902f1ac146102de578063095ea7b3146103565780630dfe1681146103bc57806318160ddd14610406575b600080fd5b610259600480360360808110156101c457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561021557600080fd5b82018360208201111561022757600080fd5b8035906020019184600183028401116401000000008311171561024957600080fd5b9091929391929390505050610a29565b005b610263611234565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a3578082015181840152602081019050610288565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e661126d565b60405180846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390f35b6103a26004803603604081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112ca565b604051808215151515815260200191505060405180910390f35b6103c46112e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040e611307565b6040518082815260200191505060405180910390f35b6104906004803603606081101561043a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130d565b604051808215151515815260200191505060405180910390f35b6104b26114d8565b6040518082815260200191505060405180910390f35b6104d06114ff565b604051808260ff1660ff16815260200191505060405180910390f35b6104f4611504565b6040518082815260200191505060405180910390f35b61056c6004803603604081101561052057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061150a565b005b610576611653565b6040518082815260200191505060405180910390f35b610594611659565b6040518082815260200191505060405180910390f35b6105ec600480360360208110156105c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061165f565b6040518082815260200191505060405180910390f35b6106446004803603602081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b10565b6040518082815260200191505060405180910390f35b610662611b28565b6040518082815260200191505060405180910390f35b6106ba6004803603602081101561068e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2e565b6040518082815260200191505060405180910390f35b610712600480360360208110156106e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b46565b604051808381526020018281526020019250505060405180910390f35b610737612133565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561077757808201518184015260208101905061075c565b50505050905090810190601f1680156107a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107fe600480360360408110156107c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216c565b604051808215151515815260200191505060405180910390f35b610820612183565b6040518082815260200191505060405180910390f35b6108786004803603602081101561084c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612189565b005b610882612464565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108cc61248a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109a5600480360360e081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506124b0565b005b610a09600480360360408110156109bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127f4565b6040518082815260200191505060405180910390f35b610a27612819565b005b6001600c5414610aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f50616e63616b653a204c4f434b4544000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000851180610ab85750600084115b610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613a086023913960400191505060405180910390fd5b600080610b1861126d565b5091509150816dffffffffffffffffffffffffffff1687108015610b4b5750806dffffffffffffffffffffffffffff1686105b610bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f50616e63616b653a20494e53554646494349454e545f4c49515549444954590081525060200191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610c7657508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610ce8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f50616e63616b653a20494e56414c49445f544f0000000000000000000000000081525060200191505060405180910390fd5b60008b1115610cfd57610cfc828a8d612a99565b5b60008a1115610d1257610d11818a8c612a99565b5b6000888890501115610dfa578873ffffffffffffffffffffffffffffffffffffffff166384800812338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e7757600080fd5b505afa158015610e8b573d6000803e3d6000fd5b505050506040513d6020811015610ea157600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f3157600080fd5b505afa158015610f45573d6000803e3d6000fd5b505050506040513d6020811015610f5b57600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff16038311610f92576000610fa8565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610fcc576000610fe2565b89856dffffffffffffffffffffffffffff160383035b90506000821180610ff35750600081115b611048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139c06022913960400191505060405180910390fd5b6000611084611061601985612ce690919063ffffffff16565b61107661271088612ce690919063ffffffff16565b612d7b90919063ffffffff16565b905060006110c261109f601985612ce690919063ffffffff16565b6110b461271088612ce690919063ffffffff16565b612d7b90919063ffffffff16565b905061110d6305f5e1006110ff896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff16612ce690919063ffffffff16565b612ce690919063ffffffff16565b6111208284612ce690919063ffffffff16565b1015611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f50616e63616b653a204b0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b50506111a284848888612dfe565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050506001600c819055505050505050565b6040518060400160405280600b81526020017f50616e63616b65204c507300000000000000000000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b60006112d733848461317c565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114c25761144182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7b90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6114cd848484613267565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f50616e63616b653a20464f5242494444454e000000000000000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c54146116d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f50616e63616b653a204c4f434b4544000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000806116ec61126d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561179257600080fd5b505afa1580156117a6573d6000803e3d6000fd5b505050506040513d60208110156117bc57600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187057600080fd5b505afa158015611884573d6000803e3d6000fd5b505050506040513d602081101561189a57600080fd5b8101908080519060200190929190505050905060006118d2856dffffffffffffffffffffffffffff1684612d7b90919063ffffffff16565b905060006118f9856dffffffffffffffffffffffffffff1684612d7b90919063ffffffff16565b9050600061190787876133fb565b9050600080549050600081141561195b576119476103e86119396119348688612ce690919063ffffffff16565b613602565b612d7b90919063ffffffff16565b985061195660006103e8613664565b6119be565b6119bb886dffffffffffffffffffffffffffff166119828387612ce690919063ffffffff16565b8161198957fe5b04886dffffffffffffffffffffffffffff166119ae8487612ce690919063ffffffff16565b816119b557fe5b0461377e565b98505b60008911611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a2b6026913960400191505060405180910390fd5b611a218a8a613664565b611a2d86868a8a612dfe565b8115611aa557611a9e6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612ce690919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f50616e63616b653a204c4f434b4544000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550600080611bd461126d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ca657600080fd5b505afa158015611cba573d6000803e3d6000fd5b505050506040513d6020811015611cd057600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d6257600080fd5b505afa158015611d76573d6000803e3d6000fd5b505050506040513d6020811015611d8c57600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611def88886133fb565b905060008054905080611e0b8685612ce690919063ffffffff16565b81611e1257fe5b049a5080611e298585612ce690919063ffffffff16565b81611e3057fe5b04995060008b118015611e43575060008a115b611e98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139e26026913960400191505060405180910390fd5b611ea23084613797565b611ead878d8d612a99565b611eb8868d8c612a99565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f3557600080fd5b505afa158015611f49573d6000803e3d6000fd5b505050506040513d6020811015611f5f57600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fef57600080fd5b505afa158015612003573d6000803e3d6000fd5b505050506040513d602081101561201957600080fd5b8101908080519060200190929190505050935061203885858b8b612dfe565b81156120b0576120a96008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612ce690919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600781526020017f43616b652d4c500000000000000000000000000000000000000000000000000081525081565b6000612179338484613267565b6001905092915050565b6103e881565b6001600c5414612201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f50616e63616b653a204c4f434b4544000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506123578284612352600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561230957600080fd5b505afa15801561231d573d6000803e3d6000fd5b505050506040513d602081101561233357600080fd5b8101908080519060200190929190505050612d7b90919063ffffffff16565b612a99565b61245781846124526008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561240957600080fd5b505afa15801561241d573d6000803e3d6000fd5b505050506040513d602081101561243357600080fd5b8101908080519060200190929190505050612d7b90919063ffffffff16565b612a99565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b42841015612526576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f50616e63616b653a20455850495245440000000000000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156126f8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561276c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6127de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f50616e63616b653a20494e56414c49445f5349474e415455524500000000000081525060200191505060405180910390fd5b6127e989898961317c565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c5414612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f50616e63616b653a204c4f434b4544000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550612a8f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561293b57600080fd5b505afa15801561294f573d6000803e3d6000fd5b505050506040513d602081101561296557600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a1557600080fd5b505afa158015612a29573d6000803e3d6000fd5b505050506040513d6020811015612a3f57600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16612dfe565b6001600c81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612bc65780518252602082019150602081019050602083039250612ba3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c28576040519150601f19603f3d011682016040523d82523d6000602084013e612c2d565b606091505b5091509150818015612c6d5750600081511480612c6c5750808060200190516020811015612c5a57600080fd5b81019080805190602001909291905050505b5b612cdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f50616e63616b653a205452414e534645525f4641494c4544000000000000000081525060200191505060405180910390fd5b5050505050565b600080821480612d035750828283850292508281612d0057fe5b04145b612d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115612df8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168411158015612e6e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b612ee0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f50616e63616b653a204f564552464c4f5700000000000000000000000000000081525060200191505060405180910390fd5b60006401000000004281612ef057fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff16118015612f3357506000846dffffffffffffffffffffffffffff1614155b8015612f5057506000836dffffffffffffffffffffffffffff1614155b15613032578063ffffffff16612f9585612f69866138b1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166138dc90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff1661300384612fd7876138b1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166138dc90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6132b981600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7b90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061334e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461393c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561346657600080fd5b505afa15801561347a573d6000803e3d6000fd5b505050506040513d602081101561349057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b54905082156135e857600081146135e3576000613528613523866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612ce690919063ffffffff16565b613602565b9050600061353583613602565b9050808211156135e057600061357b600861356d61355c8587612d7b90919063ffffffff16565b600054612ce690919063ffffffff16565b612ce690919063ffffffff16565b905060006135b8613596600885612ce690919063ffffffff16565b6135aa601187612ce690919063ffffffff16565b61393c90919063ffffffff16565b905060008183816135c557fe5b04905060008111156135dc576135db8782613664565b5b5050505b50505b6135fa565b600081146135f9576000600b819055505b5b505092915050565b6000600382111561365157819050600060016002848161361e57fe5b040190505b8181101561364b5780915060028182858161363a57fe5b04018161364357fe5b049050613623565b5061365f565b6000821461365e57600190505b5b919050565b6136798160005461393c90919063ffffffff16565b6000819055506136d181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461393c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081831061378d578161378f565b825b905092915050565b6137e981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384181600054612d7b90919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168161393357fe5b04905092915050565b60008282840191508110156139b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b9291505056fe50616e63616b653a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b653a20494e53554646494349454e545f4c49515549444954595f4255524e454450616e63616b653a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b653a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a723158204c647542259e471353892c1bc85f3bd97626f8162e3134e910684c65f3f4f2ca64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11152:9676:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11152:9676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18351:1884;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18351:1884:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;18351:1884:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18351:1884: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;18351:1884:0;;;;;;;;;;;;:::i;:::-;;4592:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4592:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12165:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6641:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6641:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11456:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4732:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6943:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6943:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5024:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4690:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4881:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13223:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13223:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11807:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11846;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15425:1238;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15425:1238:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4763:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4763:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11885:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5139:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5139:38:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16775:1464;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16775:1464:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4642:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4642:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6796:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6796:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11277:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20284:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20284:334:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11427:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11484:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7252:670;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7252:670:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4811:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4811:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20667:158;;;:::i;:::-;;18351:1884;12070:1;12058:8;;:13;12050:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12113:1;12102:8;:12;;;;18478:1;18465:10;:14;:32;;;;18496:1;18483:10;:14;18465:32;18457:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18549:17;18568;18590:13;:11;:13::i;:::-;18548:55;;;;;18650:9;18637:22;;:10;:22;:48;;;;;18676:9;18663:22;;:10;:22;18637:48;18629:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18734:13;18758;18848:15;18866:6;;;;;;;;;;;18848:24;;18883:15;18901:6;;;;;;;;;;;18883:24;;18932:7;18926:13;;:2;:13;;;;:30;;;;;18949:7;18943:13;;:2;:13;;;;18926:30;18918:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19008:1;18995:10;:14;18991:58;;;19011:38;19025:7;19034:2;19038:10;19011:13;:38::i;:::-;18991:58;19111:1;19098:10;:14;19094:58;;;19114:38;19128:7;19137:2;19141:10;19114:13;:38::i;:::-;19094:58;19215:1;19201:4;;:11;;:15;19197:93;;;19233:2;19218:30;;;19249:10;19261;19273;19285:4;;19218:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;19218:72:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19218:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19218:72:0;;;;19197:93;19319:7;19312:25;;;19346:4;19312:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19312:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19312:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19312:40:0;;;;;;;;;;;;;;;;19301:51;;19381:7;19374:25;;;19408:4;19374:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19374:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19374:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19374:40:0;;;;;;;;;;;;;;;;19363:51;;12125:1;;19436:14;19476:10;19464:9;:22;;;19453:8;:33;:75;;19527:1;19453:75;;;19513:10;19501:9;:22;;;19489:8;:35;19453:75;19436:92;;19539:14;19579:10;19567:9;:22;;;19556:8;:33;:75;;19630:1;19556:75;;;19616:10;19604:9;:22;;;19592:8;:35;19556:75;19539:92;;19662:1;19650:9;:13;:30;;;;19679:1;19667:9;:13;19650:30;19642:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19805:21;19830:42;19854:17;19868:2;19854:9;:13;;:17;;;;:::i;:::-;19830:19;19843:5;19830:8;:12;;:19;;;;:::i;:::-;:23;;:42;;;;:::i;:::-;19805:68;;19884:21;19909:42;19933:17;19947:2;19933:9;:13;;:17;;;;:::i;:::-;19909:19;19922:5;19909:8;:12;;:19;;;;:::i;:::-;:23;;:42;;;;:::i;:::-;19884:68;;20013:44;20048:8;20013:30;20033:9;20013:30;;20018:9;20013:15;;:19;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;19971:38;19992:16;19971;:20;;:38;;;;:::i;:::-;:86;;19963:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12125:1;;20096:49;20104:8;20114;20124:9;20135;20096:7;:49::i;:::-;20224:2;20161:66;;20166:10;20161:66;;;20178:9;20189;20200:10;20212;20161:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12125:1;;;;;;12148;12137:8;:12;;;;18351:1884;;;;;:::o;4592:43::-;;;;;;;;;;;;;;;;;;;:::o;12165:231::-;12209:17;12228;12247:26;12298:8;;;;;;;;;;;12286:20;;12329:8;;;;;;;;;;;12317:20;;12370:18;;;;;;;;;;;12348:40;;12165:231;;;:::o;6641:147::-;6705:4;6722:36;6731:10;6743:7;6752:5;6722:8;:36::i;:::-;6776:4;6769:11;;6641:147;;;;:::o;11456:21::-;;;;;;;;;;;;;:::o;4732:24::-;;;;:::o;6943:301::-;7021:4;7078:2;7042:9;:15;7052:4;7042:15;;;;;;;;;;;;;;;:27;7058:10;7042:27;;;;;;;;;;;;;;;;:39;7038:140;;7128:38;7160:5;7128:9;:15;7138:4;7128:15;;;;;;;;;;;;;;;:27;7144:10;7128:27;;;;;;;;;;;;;;;;:31;;:38;;;;:::i;:::-;7098:9;:15;7108:4;7098:15;;;;;;;;;;;;;;;:27;7114:10;7098:27;;;;;;;;;;;;;;;:68;;;;7038:140;7188:26;7198:4;7204:2;7208:5;7188:9;:26::i;:::-;7232:4;7225:11;;6943:301;;;;;:::o;5024:108::-;5066:66;5024:108;;;:::o;4690:35::-;4723:2;4690:35;:::o;4881:31::-;;;;:::o;13223:208::-;13319:7;;;;;;;;;;;13305:21;;:10;:21;;;13297:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13389:7;13380:6;;:16;;;;;;;;;;;;;;;;;;13416:7;13407:6;;:16;;;;;;;;;;;;;;;;;;13223:208;;:::o;11807:32::-;;;;:::o;11846:::-;;;;:::o;15425:1238::-;15474:14;12070:1;12058:8;;:13;12050:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12113:1;12102:8;:12;;;;15502:17;15521;15543:13;:11;:13::i;:::-;15501:55;;;;;15582:13;15605:6;;;;;;;;;;;15598:24;;;15631:4;15598:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15598:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15598:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15598:39:0;;;;;;;;;;;;;;;;15582:55;;15648:13;15671:6;;;;;;;;;;;15664:24;;;15697:4;15664:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15664:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15664:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15664:39:0;;;;;;;;;;;;;;;;15648:55;;15714:12;15729:23;15742:9;15729:23;;:8;:12;;:23;;;;:::i;:::-;15714:38;;15763:12;15778:23;15791:9;15778:23;;:8;:12;;:23;;;;:::i;:::-;15763:38;;15814:10;15827:30;15836:9;15847;15827:8;:30::i;:::-;15814:43;;15868:17;15888:11;;15868:31;;16008:1;15992:12;:17;15988:352;;;16038:54;11318:5;16038:31;16048:20;16060:7;16048;:11;;:20;;;;:::i;:::-;16038:9;:31::i;:::-;:35;;:54;;;;:::i;:::-;16026:66;;16106:36;16120:1;11318:5;16106;:36::i;:::-;15988:352;;;16242:86;16279:9;16251:37;;:25;16263:12;16251:7;:11;;:25;;;;:::i;:::-;:37;;;;;;16318:9;16290:37;;:25;16302:12;16290:7;:11;;:25;;;;:::i;:::-;:37;;;;;;16242:8;:86::i;:::-;16230:98;;15988:352;16370:1;16358:9;:13;16350:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16425:20;16431:2;16435:9;16425:5;:20::i;:::-;16458:49;16466:8;16476;16486:9;16497;16458:7;:49::i;:::-;16522:5;16518:47;;;16537:28;16556:8;;;;;;;;;;;16537:28;;16542:8;;;;;;;;;;;16537:14;;:18;;:28;;;;:::i;:::-;16529:5;:36;;;;16518:47;16626:10;16621:34;;;16638:7;16647;16621:34;;;;;;;;;;;;;;;;;;;;;;;;12125:1;;;;;;;;12148;12137:8;:12;;;;15425:1238;;;:::o;4763:41::-;;;;;;;;;;;;;;;;;:::o;11885:17::-;;;;:::o;5139:38::-;;;;;;;;;;;;;;;;;:::o;16775:1464::-;16824:12;16838;12070:1;12058:8;;:13;12050:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12113:1;12102:8;:12;;;;16864:17;16883;16905:13;:11;:13::i;:::-;16863:55;;;;;16944:15;16962:6;;;;;;;;;;;16944:24;;17025:15;17043:6;;;;;;;;;;;17025:24;;17106:13;17129:7;17122:25;;;17156:4;17122:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17122:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17122:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17122:40:0;;;;;;;;;;;;;;;;17106:56;;17173:13;17196:7;17189:25;;;17223:4;17189:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17189:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17189:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17189:40:0;;;;;;;;;;;;;;;;17173:56;;17240:14;17257:9;:24;17275:4;17257:24;;;;;;;;;;;;;;;;17240:41;;17294:10;17307:30;17316:9;17327;17307:8;:30::i;:::-;17294:43;;17348:17;17368:11;;17348:31;;17504:12;17478:23;17492:8;17478:9;:13;;:23;;;;:::i;:::-;:38;;;;;;17468:48;;17611:12;17585:23;17599:8;17585:9;:13;;:23;;;;:::i;:::-;:38;;;;;;17575:48;;17700:1;17690:7;:11;:26;;;;;17715:1;17705:7;:11;17690:26;17682:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17770:31;17784:4;17791:9;17770:5;:31::i;:::-;17812:35;17826:7;17835:2;17839:7;17812:13;:35::i;:::-;17858;17872:7;17881:2;17885:7;17858:13;:35::i;:::-;17922:7;17915:25;;;17949:4;17915:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17915:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17915:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17915:40:0;;;;;;;;;;;;;;;;17904:51;;17984:7;17977:25;;;18011:4;17977:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17977:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17977:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17977:40:0;;;;;;;;;;;;;;;;17966:51;;18030:49;18038:8;18048;18058:9;18069;18030:7;:49::i;:::-;18094:5;18090:47;;;18109:28;18128:8;;;;;;;;;;;18109:28;;18114:8;;;;;;;;;;;18109:14;;:18;;:28;;;;:::i;:::-;18101:5;:36;;;;18090:47;18228:2;18193:38;;18198:10;18193:38;;;18210:7;18219;18193:38;;;;;;;;;;;;;;;;;;;;;;;;12125:1;;;;;;;;;12148;12137:8;:12;;;;16775:1464;;;:::o;4642:41::-;;;;;;;;;;;;;;;;;;;:::o;6796:139::-;6856:4;6873:32;6883:10;6895:2;6899:5;6873:9;:32::i;:::-;6923:4;6916:11;;6796:139;;;;:::o;11277:46::-;11318:5;11277:46;:::o;20284:334::-;12070:1;12058:8;;:13;12050:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12113:1;12102:8;:12;;;;20335:15;20353:6;;;;;;;;;;;20335:24;;20385:15;20403:6;;;;;;;;;;;20385:24;;20435:82;20449:7;20458:2;20462:54;20507:8;;;;;;;;;;;20462:54;;20469:7;20462:25;;;20496:4;20462:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20462:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20462:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20462:40:0;;;;;;;;;;;;;;;;:44;;:54;;;;:::i;:::-;20435:13;:82::i;:::-;20528;20542:7;20551:2;20555:54;20600:8;;;;;;;;;;;20555:54;;20562:7;20555:25;;;20589:4;20555:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20555:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20555:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20555:40:0;;;;;;;;;;;;;;;;:44;;:54;;;;:::i;:::-;20528:13;:82::i;:::-;12125:1;;12148;12137:8;:12;;;;20284:334;:::o;11427:22::-;;;;;;;;;;;;;:::o;11484:21::-;;;;;;;;;;;;;:::o;7252:670::-;7398:15;7386:8;:27;;7378:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7445:14;7550:16;;5066:66;7606:15;;7623:5;7630:7;7639:5;7646:6;:13;7653:5;7646:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;7663:8;7595:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7595:77:0;;;7585:88;;;;;;7486:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7486:202:0;;;7462:237;;;;;;7445:254;;7710:24;7737:26;7747:6;7755:1;7758;7761;7737:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7737:26:0;;;;;;;;7710:53;;7810:1;7782:30;;:16;:30;;;;:59;;;;;7836:5;7816:25;;:16;:25;;;7782:59;7774:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7883:31;7892:5;7899:7;7908:5;7883:8;:31::i;:::-;7252:670;;;;;;;;;:::o;4811:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20667:158::-;12070:1;12058:8;;:13;12050:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12113:1;12102:8;:12;;;;20708:109;20723:6;;;;;;;;;;;20716:24;;;20749:4;20716:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20716:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20716:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20716:39:0;;;;;;;;;;;;;;;;20764:6;;;;;;;;;;;20757:24;;;20790:4;20757:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20757:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20757:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20757:39:0;;;;;;;;;;;;;;;;20798:8;;;;;;;;;;;20808;;;;;;;;;;;20708:7;:109::i;:::-;12148:1;12137:8;:12;;;;20667:158::o;12404:285::-;12486:12;12500:17;12521:5;:10;;11382:34;;;;;;;;;;;;;;;;;11372:45;;;;;;12565:2;12569:5;12532:43;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12532:43:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;12532:43:0;12521:55;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;12521: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;;12485:91:0;;;;12595:7;:57;;;;;12622:1;12607:4;:11;:16;:44;;;;12638:4;12627:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12627:24:0;;;;;;;;;;;;;;;;12607:44;12595:57;12587:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12404:285;;;;;:::o;4296:142::-;4348:6;4380:1;4375;:6;:30;;;;4404:1;4399;4394;4390;:5;4386:9;;;4385:15;;;;;;:20;4375:30;4367:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4296:142;;;;:::o;4159:129::-;4211:6;4253:1;4247;4243;:5;4239:9;;;4238:16;;4230:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4159:129;;;;:::o;13516:858::-;13648:2;13628:23;;:8;:23;;:50;;;;;13675:2;13655:23;;:8;:23;;13628:50;13620:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13711:21;13760:5;13742:15;:23;;;;;;13711:55;;13777:18;13815;;;;;;;;;;;13798:14;:35;13777:56;;13885:1;13871:11;:15;;;:33;;;;;13903:1;13890:9;:14;;;;13871:33;:51;;;;;13921:1;13908:9;:14;;;;13871:51;13867:336;;;14077:11;14024:64;;14029:44;14063:9;14029:27;14046:9;14029:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;14024:50;;:64;14000:20;;:88;;;;;;;;;;;14180:11;14127:64;;14132:44;14166:9;14132:27;14149:9;14132:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;14127:50;;:64;14103:20;;:88;;;;;;;;;;;13867:336;14232:8;14213;;:28;;;;;;;;;;;;;;;;;;14271:8;14252;;:28;;;;;;;;;;;;;;;;;;14312:14;14291:18;;:35;;;;;;;;;;;;;;;;;;14342:24;14347:8;;;;;;;;;;;14357;;;;;;;;;;;14342:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13516:858;;;;;;:::o;6236:169::-;6345:5;6317:9;:16;6327:5;6317:16;;;;;;;;;;;;;;;:25;6334:7;6317:25;;;;;;;;;;;;;;;:33;;;;6382:7;6366:31;;6375:5;6366:31;;;6391:5;6366:31;;;;;;;;;;;;;;;;;;6236:169;;;:::o;6413:220::-;6507:26;6527:5;6507:9;:15;6517:4;6507:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;6489:9;:15;6499:4;6489:15;;;;;;;;;;;;;;;:44;;;;6560:24;6578:5;6560:9;:13;6570:2;6560:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;6544:9;:13;6554:2;6544:13;;;;;;;;;;;;;;;:40;;;;6615:2;6600:25;;6609:4;6600:25;;;6619:5;6600:25;;;;;;;;;;;;;;;;;;6413:220;;;:::o;14463:850::-;14536:10;14559:13;14591:7;;;;;;;;;;;14575:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14575:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14575:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14575:32:0;;;;;;;;;;;;;;;;14559:48;;14643:1;14626:19;;:5;:19;;;;14618:27;;14656:11;14670:5;;14656:19;;14705:5;14701:605;;;14741:1;14731:6;:11;14727:509;;14763:10;14776:41;14786:30;14806:9;14786:30;;14791:9;14786:15;;:19;;:30;;;;:::i;:::-;14776:9;:41::i;:::-;14763:54;;14836:14;14853:17;14863:6;14853:9;:17::i;:::-;14836:34;;14901:9;14893:5;:17;14889:332;;;14935:14;14952:44;14994:1;14952:37;14968:20;14978:9;14968:5;:9;;:20;;;;:::i;:::-;14952:11;;:15;;:37;;;;:::i;:::-;:41;;:44;;;;:::i;:::-;14935:61;;15019:16;15038:35;15056:16;15070:1;15056:9;:13;;:16;;;;:::i;:::-;15038:13;15048:2;15038:5;:9;;:13;;;;:::i;:::-;:17;;:35;;;;:::i;:::-;15019:54;;15096:14;15125:11;15113:9;:23;;;;;;15096:40;;15175:1;15163:9;:13;15159:42;;;15178:23;15184:5;15191:9;15178:5;:23::i;:::-;15159:42;14889:332;;;;14727:509;;;14701:605;;;15267:1;15257:6;:11;15253:53;;15293:1;15285:5;:9;;;;15253:53;14701:605;14463:850;;;;;;:::o;8287:303::-;8332:6;8359:1;8355;:5;8351:232;;;8381:1;8377:5;;8397:6;8414:1;8410;8406;:5;;;;;;:9;8397:18;;8430:92;8441:1;8437;:5;8430:92;;;8467:1;8463:5;;8505:1;8500;8496;8492;:5;;;;;;:9;8491:15;;;;;;8487:19;;8430:92;;;8351:232;;;;8548:1;8543;:6;8539:44;;8570:1;8566:5;;8539:44;8351:232;8287:303;;;:::o;5810:201::-;5883:22;5899:5;5883:11;;:15;;:22;;;;:::i;:::-;5869:11;:36;;;;5932:24;5950:5;5932:9;:13;5942:2;5932:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5916:9;:13;5926:2;5916:13;;;;;;;;;;;;;;;:40;;;;5993:2;5972:31;;5989:1;5972:31;;;5997:5;5972:31;;;;;;;;;;;;;;;;;;5810:201;;:::o;8073:96::-;8125:6;8152:1;8148;:5;:13;;8160:1;8148:13;;;8156:1;8148:13;8144:17;;8073:96;;;;:::o;6019:209::-;6098:26;6118:5;6098:9;:15;6108:4;6098:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;6080:9;:15;6090:4;6080:15;;;;;;;;;;;;;;;:44;;;;6149:22;6165:5;6149:11;;:15;;:22;;;;:::i;:::-;6135:11;:36;;;;6210:1;6187:33;;6196:4;6187:33;;;6214:5;6187:33;;;;;;;;;;;;;;;;;;6019:209;;:::o;8937:120::-;8987:9;8882:6;9021:1;9013:10;;:17;9009:21;;8937:120;;;:::o;9128:108::-;9188:9;9226:1;9218:10;;9214:14;;:1;:14;;;;;;;;9210:18;;9128:108;;;;:::o;4023:128::-;4075:6;4117:1;4111;4107;:5;4103:9;;;4102:16;;4094:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:128;;;;:::o

Swarm Source

bzzr://4c647542259e471353892c1bc85f3bd97626f8162e3134e910684c65f3f4f2ca
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.