Contract 0xd0f82498051067e154d1dcd3d88fa95063949d7e

 
 
Txn Hash
Block
From
To
Value [Txn Fee]
0xf461259ef904ac35043ee4b338695a6b8d7702cb98198f6db9f8690fbd035bad95133952021-07-27 5:13:021 hr 38 mins ago0x37552b04d9ae5a8f3de89c53bbfc680e7ca277ac IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x09a989cf36d06602c26a052dcb213067c4147dbcab106dc917e63db12f0317df95121212021-07-27 4:09:202 hrs 42 mins ago0x27300998ab3efdd3fa43ac601dec1b34abff9cb3 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00012577
0xa1360ebde68651884a317efb937198565838afa4e67273c993a4fe9f1398961b95121122021-07-27 4:08:532 hrs 43 mins ago0x27300998ab3efdd3fa43ac601dec1b34abff9cb3 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x7d6dde136a2b2b9aa64cb8d9575335d760864afcf48403e6b7524088e104934d95109092021-07-27 3:07:223 hrs 44 mins ago0x295048820d56ea2c2cf014231e4ac9462840ef87 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x142e2372c9fb508a4889c8e14eda28e172b96b104931683745c80a0545d4062d95050902021-07-26 22:15:058 hrs 36 mins ago0x943df5fb381760e55ec6383da2fc61d54c7cf514 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xfbb18a84fb018ac5a5652a9326f2d7f85959a6d27b495fdab632704ceef6c28995006552021-07-26 18:27:5912 hrs 24 mins ago0xc2bce275aa0879a21cc2b968e29a00b7e0cf3e43 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x21e0b6e315e48983a22802d0c39f98a1d1cf37aaa5b40f9b993dd5895edaa0a894957652021-07-26 14:14:2216 hrs 37 mins ago0xc662a3d357641c71d560f9e7f386be2c3da98e29 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x2883bba9e893eff51100aea6b485f4866f0e10dfda1a81084a721e0db1fa2fe994945572021-07-26 13:12:0117 hrs 39 mins ago0x4c02a8809058ca1d98bd1a934a016fe3bbb1b907 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x4a99ce4fecd5aae548c1b089c164130fd5f3e117a820c5759ba718c9be7fb74994935462021-07-26 12:19:1318 hrs 32 mins ago0xd5f4818920066f1022ad480fd4e766988046f29d IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x7521feb7426b3a2df1572099cdad2ec78a7e9ea51405a547b30e3a3d016904d794905462021-07-26 9:40:5121 hrs 11 mins ago0x512cc0cff88125efb0887203124601059ecc54b2 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x62d3babeb5fef403596613918a6b6c59404accebe6350edb4c2ceef112c3144494901102021-07-26 9:18:3921 hrs 33 mins ago0x3c8f53078308c260d80383bd5bf4af9579bf7d78 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x44c12ecfce9bb30b1e388521fc9be992c5267aeb3fd24e9cb8d4b91727cbf4d894891972021-07-26 8:32:2022 hrs 19 mins ago0x95734295e86241f032b090de11095ae49c1c0d8d IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x98380414e787c3b5304ed24ead901648c360c827037fab0da4225ab2a932754894879842021-07-26 7:30:2423 hrs 21 mins ago0xa2aae97e7e254152fb62c507ce6ead4fd5a88a45 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xb8f890b91f4f08e85a23c397ae609661189971e3876d009fccf9dd53212141ec94844612021-07-26 4:30:351 day 2 hrs ago0xe55d69ab96d1a18fbfe35f3fdfb7e7e9250e6e96 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xfc15b050ddccc9acd0ed71a88e2dd71bbd094798dbcb06864fe0b20f178e961a94825792021-07-26 2:55:511 day 3 hrs ago0x39bd36c151b9e342f5d8d42a4d4f4db7b0bef206 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.000072425
0xa98b71bf5ca2bed4157ef37f913c2d44e5edf1d1bd9c58bc6ff1a84232fad17a94812102021-07-26 1:46:311 day 5 hrs ago0xde82a874cef35d08e468d292bc6ad13b31add481 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xf98ed9bb6575a25126af0dfda51505e472c692e47411082ff318377b48e5b22c94808882021-07-26 1:30:251 day 5 hrs ago0x42065347d997a140c9349dc572a7dd5abc203a53 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.000266124
0x07b8aa09c9460c8f4a6f1a6bf9c607f33c8150ca0cfab54600389b942ed9164d94765352021-07-25 21:52:311 day 8 hrs ago0x564d00f74a4f5894bc7a61659ea454dca624f03e IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x2e2da742f564f87e2227621fd7a01b1e2adeda9988aa8774eff4cb45f1cc44c094748912021-07-25 20:29:541 day 10 hrs ago0x0ba5c83dba4efb24e0a4d4b3fa2f5e217b3a49d0 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xff3c9f79b31c7010f086723d2a4389296b88382e7bf5ba05c994cd26db5beca094746502021-07-25 20:17:511 day 10 hrs ago0xfbea2e296faa3f3dec2f3b41644dd57b83ff8fad IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xe766e07f37b72d8213dbaa162016310c66a263f63aae6e91c7013cb5f8eb652b94742462021-07-25 19:57:391 day 10 hrs ago0xfbea2e296faa3f3dec2f3b41644dd57b83ff8fad IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x5e0dc5ada81e4fa56b2bdbbde7f6df84a213a9eef2f2906e3c7fab7fcc9030b594738542021-07-25 19:38:031 day 11 hrs ago0x4d36237ba9992d264c745dc6b93d9c62ea250257 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x8e479f0f9843063557b5364b4b7cef99fd98dbd277d1e372f222a9a4626465b694714032021-07-25 17:35:071 day 13 hrs ago0xe1e790e45cbb5f2a52956a58fc88037e57fff645 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0xe7877713802f32f1a622391b0e32d83fd23ff5ba4e1ea45052c2abbc4b5ad13894712152021-07-25 17:25:131 day 13 hrs ago0xfd113276191955aa5b796db54a001082e0ecfa1b IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
0x0f99a3be4e70207756e9e8f3242c8162ce1fb8c3bdd6e455e3794bcf5e5ee22794703662021-07-25 16:41:211 day 14 hrs ago0xc7e4159a4254a28e86d8d5ccf4e4c82c7b5897b1 IN  0xd0f82498051067e154d1dcd3d88fa95063949d7e0 BNB0.00022177
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x929b4d77e4f72453d5f75250286fc06dd2e89fa990c5d8c8e447c2f6ce5f371175514712021-05-19 18:28:2668 days 12 hrs ago 0x0841bd0b734e4f5853f0dd8d7ea041c241fb0da6  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 0x7bd46f6da97312ac2dbd1749f82e202764c0b914

Contract Name:
ApePair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 10 : ApePair.sol
pragma solidity =0.5.16;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

import './interfaces/IApePair.sol';
import './ApeERC20.sol';
import './libraries/Math.sol';
import './libraries/UQ112x112.sol';
import './interfaces/IERC20.sol';
import './interfaces/IApeFactory.sol';
import './interfaces/IApeCallee.sol';

contract ApePair is IApePair, ApeERC20 {
    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, 'ApeSwap: 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))), 'ApeSwap: 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, 'ApeSwap: 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), 'ApeSwap: 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 = IApeFactory(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, 'ApeSwap: 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, 'ApeSwap: 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, 'ApeSwap: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'ApeSwap: 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, 'ApeSwap: 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) IApeCallee(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, 'ApeSwap: 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), 'ApeSwap: 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);
    }
}

File 2 of 10 : IApePair.sol
pragma solidity >=0.5.0;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

interface IApePair {
    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 3 of 10 : ApeERC20.sol
pragma solidity =0.5.16;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

import './interfaces/IApeERC20.sol';
import './libraries/SafeMath.sol';

contract ApeERC20 is IApeERC20 {
    using SafeMath for uint;

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

File 4 of 10 : IApeERC20.sol
pragma solidity >=0.5.0;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

interface IApeERC20 {
    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 5 of 10 : 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 6 of 10 : 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 7 of 10 : 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 8 of 10 : IERC20.sol
pragma solidity >=0.5.0;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

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 9 of 10 : IApeFactory.sol
pragma solidity >=0.5.0;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

interface IApeFactory {
    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 10 of 10 : IApeCallee.sol
pragma solidity >=0.5.0;

/*
 * ApeSwapFinance 
 * App:             https://apeswap.finance
 * Medium:          https://medium.com/@ape_swap    
 * Twitter:         https://twitter.com/ape_swap 
 * Telegram:        https://t.me/ape_swap
 * Announcements:   https://t.me/ape_swap_news
 * GitHub:          https://github.com/ApeSwapFinance
 */

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

Settings
{
  "metadata": {
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

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"}]

60806040526001600c5534801561001557600080fd5b50604051469080605261236f823960408051918290036052018220828201825260128352714170655377617046696e616e6365204c507360701b6020938401528151808301835260018152603160f81b908401528151808401919091527f3daa526e0cb6e02f6c18cec975ea46f882a39b41e4defdbb2e199e0476b3122d818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b031916331790556122628061010d6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b0e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b3c565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b66565b604080519115158252519081900360200190f35b610339610b7d565b604080516001600160a01b039092168252519081900360200190f35b61035d610b8c565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b92565b61035d610c2c565b6103b5610c50565b6040805160ff9092168252519081900360200190f35b61035d610c55565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c5b565b61035d610cdd565b61035d610ce3565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ce9565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fe7565b61035d610ff9565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610fff565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611011565b6040805192835260208301919091528051918290030190f35b6102446113b5565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113d7565b61035d6113e4565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113ea565b610339611553565b610339611562565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611571565b61035d600480360360408110156105a357600080fd5b506001600160a01b0381358116916020013516611771565b61023a61178e565b600c5460011461060c576040805162461bcd60e51b815260206004820152600f60248201526e105c1954ddd85c0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c558415158061061f5750600084115b61065a5760405162461bcd60e51b81526004018080602001828103825260238152602001806121c36023913960400191505060405180910390fd5b600080610665610b3c565b5091509150816001600160701b03168710801561068a5750806001600160701b031686105b6106db576040805162461bcd60e51b815260206004820152601f60248201527f417065537761703a20494e53554646494349454e545f4c495155494449545900604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107195750806001600160a01b0316896001600160a01b031614155b610760576040805162461bcd60e51b8152602060048201526013602482015272417065537761703a20494e56414c49445f544f60681b604482015290519081900360640190fd5b8a1561077157610771828a8d6118ee565b891561078257610782818a8c6118ee565b861561083d57886001600160a01b03166384800812338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561082457600080fd5b505af1158015610838573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d60208110156108ad57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f957600080fd5b505afa15801561090d573d6000803e3d6000fd5b505050506040513d602081101561092357600080fd5b5051925060009150506001600160701b0385168a90038311610946576000610955565b89856001600160701b03160383035b9050600089856001600160701b0316038311610972576000610981565b89856001600160701b03160383035b905060008211806109925750600081115b6109cd5760405162461bcd60e51b81526004018080602001828103825260228152602001806121e66022913960400191505060405180910390fd5b6000610a016109e384600263ffffffff611a8816565b6109f5876103e863ffffffff611a8816565b9063ffffffff611aeb16565b90506000610a196109e384600263ffffffff611a8816565b9050610a4a620f4240610a3e6001600160701b038b8116908b1663ffffffff611a8816565b9063ffffffff611a8816565b610a5a838363ffffffff611a8816565b1015610a9a576040805162461bcd60e51b815260206004820152600a602482015269417065537761703a204b60b01b604482015290519081900360640190fd5b5050610aa884848888611b3b565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b604051806040016040528060128152602001714170655377617046696e616e6365204c507360701b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b73338484611cfe565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c17576001600160a01b0384166000908152600260209081526040808320338452909152902054610bf2908363ffffffff611aeb16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c22848484611d60565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610caf576040805162461bcd60e51b815260206004820152601260248201527120b832a9bbb0b81d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d34576040805162461bcd60e51b815260206004820152600f60248201526e105c1954ddd85c0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c81905580610d44610b3c565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d9857600080fd5b505afa158015610dac573d6000803e3d6000fd5b505050506040513d6020811015610dc257600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e1557600080fd5b505afa158015610e29573d6000803e3d6000fd5b505050506040513d6020811015610e3f57600080fd5b505190506000610e5e836001600160701b03871663ffffffff611aeb16565b90506000610e7b836001600160701b03871663ffffffff611aeb16565b90506000610e898787611e1a565b60005490915080610ec657610eb26103e86109f5610ead878763ffffffff611a8816565b611f78565b9850610ec160006103e8611fca565b610f15565b610f126001600160701b038916610ee3868463ffffffff611a8816565b81610eea57fe5b046001600160701b038916610f05868563ffffffff611a8816565b81610f0c57fe5b04612060565b98505b60008911610f545760405162461bcd60e51b815260040180806020018281038252602681526020018061219d6026913960400191505060405180910390fd5b610f5e8a8a611fca565b610f6a86868a8a611b3b565b8115610f9a57600854610f96906001600160701b0380821691600160701b90041663ffffffff611a8816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461105d576040805162461bcd60e51b815260206004820152600f60248201526e105c1954ddd85c0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c8190558061106d610b3c565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110c957600080fd5b505afa1580156110dd573d6000803e3d6000fd5b505050506040513d60208110156110f357600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561114157600080fd5b505afa158015611155573d6000803e3d6000fd5b505050506040513d602081101561116b57600080fd5b50513060009081526001602052604081205491925061118a8888611e1a565b600054909150806111a1848763ffffffff611a8816565b816111a857fe5b049a50806111bc848663ffffffff611a8816565b816111c357fe5b04995060008b1180156111d6575060008a115b6112115760405162461bcd60e51b81526004018080602001828103825260268152602001806122086026913960400191505060405180910390fd5b61121b3084612078565b611226878d8d6118ee565b611231868d8c6118ee565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561127757600080fd5b505afa15801561128b573d6000803e3d6000fd5b505050506040513d60208110156112a157600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d602081101561131757600080fd5b5051935061132785858b8b611b3b565b811561135757600854611353906001600160701b0380821691600160701b90041663ffffffff611a8816565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020016504150452d4c560d41b81525081565b6000610b73338484611d60565b6103e881565b600c54600114611433576040805162461bcd60e51b815260206004820152600f60248201526e105c1954ddd85c0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114e292859287926114dd926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114a557600080fd5b505afa1580156114b9573d6000803e3d6000fd5b505050506040513d60208110156114cf57600080fd5b50519063ffffffff611aeb16565b6118ee565b600854604080516370a0823160e01b8152306004820152905161154992849287926114dd92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114a557600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115b9576040805162461bcd60e51b815260206004820152601060248201526f105c1954ddd85c0e881156141254915160821b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116d4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061170a5750886001600160a01b0316816001600160a01b0316145b61175b576040805162461bcd60e51b815260206004820152601a60248201527f417065537761703a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b611766898989611cfe565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117d7576040805162461bcd60e51b815260206004820152600f60248201526e105c1954ddd85c0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118e7926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182857600080fd5b505afa15801561183c573d6000803e3d6000fd5b505050506040513d602081101561185257600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561189f57600080fd5b505afa1580156118b3573d6000803e3d6000fd5b505050506040513d60208110156118c957600080fd5b50516008546001600160701b0380821691600160701b900416611b3b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061199b5780518252601f19909201916020918201910161197c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119fd576040519150601f19603f3d011682016040523d82523d6000602084013e611a02565b606091505b5091509150818015611a30575080511580611a305750808060200190516020811015611a2d57600080fd5b50515b611a81576040805162461bcd60e51b815260206004820152601860248201527f417065537761703a205452414e534645525f4641494c45440000000000000000604482015290519081900360640190fd5b5050505050565b6000811580611aa357505080820282828281611aa057fe5b04145b610b77576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b77576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b5957506001600160701b038311155b611b9e576040805162461bcd60e51b8152602060048201526011602482015270417065537761703a204f564552464c4f5760781b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bce57506001600160701b03841615155b8015611be257506001600160701b03831615155b15611c53578063ffffffff16611c1085611bfb86612116565b6001600160e01b03169063ffffffff61212816565b600980546001600160e01b03929092169290920201905563ffffffff8116611c3b84611bfb87612116565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d89908263ffffffff611aeb16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611dbe908263ffffffff61214d16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6b57600080fd5b505afa158015611e7f573d6000803e3d6000fd5b505050506040513d6020811015611e9557600080fd5b5051600b546001600160a01b038216158015945091925090611f64578015611f5f576000611ed8610ead6001600160701b0388811690881663ffffffff611a8816565b90506000611ee583611f78565b905080821115611f5c576000611f13611f04848463ffffffff611aeb16565b6000549063ffffffff611a8816565b90506000611f3883611f2c86600363ffffffff611a8816565b9063ffffffff61214d16565b90506000818381611f4557fe5b0490508015611f5857611f588782611fca565b5050505b50505b611f70565b8015611f70576000600b555b505092915050565b60006003821115611fbb575080600160028204015b81811015611fb557809150600281828581611fa457fe5b040181611fad57fe5b049050611f8d565b50611fc5565b8115611fc5575060015b919050565b600054611fdd908263ffffffff61214d16565b60009081556001600160a01b038316815260016020526040902054612008908263ffffffff61214d16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061206f5781612071565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120a1908263ffffffff611aeb16565b6001600160a01b038316600090815260016020526040812091909155546120ce908263ffffffff611aeb16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161214557fe5b049392505050565b80820182811015610b77576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe417065537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544417065537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54417065537761703a20494e53554646494349454e545f494e5055545f414d4f554e54417065537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a265627a7a7231582031d3e6c9e68f56739306d3a26b603704ef6ca3724b6bcaa96561ff6fb31a165e64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

583:9443:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:9443:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7604:1843;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7604:1843:1;;;;;;;;-1:-1:-1;;;;;7604:1843:1;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7604:1843:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7604:1843:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;7604:1843:1;;-1:-1:-1;7604:1843:1;-1:-1:-1;7604:1843:1;:::i;:::-;;483:50:0;;;:::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;483:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1557:227:1;;;:::i;:::-;;;;-1:-1:-1;;;;;1557:227:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2484:144:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2484:144:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;867:21:1;;;:::i;:::-;;;;-1:-1:-1;;;;;867:21:1;;;;;;;;;;;;;;626:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;2776:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2776:295:0;;;;;;;;;;;;;;;;;:::i;912:108::-;;;:::i;585:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;771:31;;;:::i;2587:204:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2587:204:1;;;;;;;;;;:::i;1211:32::-;;;:::i;1249:::-;;;:::i;4727:1217::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4727:1217:1;-1:-1:-1;;;;;4727:1217:1;;:::i;656:41:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;656:41:0;-1:-1:-1;;;;;656:41:0;;:::i;1287:17:1:-;;;:::i;1026:38:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1026:38:0;-1:-1:-1;;;;;1026:38:0;;:::i;6053:1442:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6053:1442:1;-1:-1:-1;;;;;6053:1442:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;539:40:0;;;:::i;2634:136::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2634:136:0;;;;;;;;:::i;692:46:1:-;;;:::i;9493:329::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9493:329:1;-1:-1:-1;;;;;9493:329:1;;:::i;839:22::-;;;:::i;894:21::-;;;:::i;3077:658:0:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3077:658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;703:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;703:61:0;;;;;;;;;;:::i;9868:156:1:-;;;:::i;7604:1843::-;1456:8;;1468:1;1456:13;1448:41;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;;;;1510:1;1499:8;:12;7717:14;;;;:32;;;7748:1;7735:10;:14;7717:32;7709:80;;;;-1:-1:-1;;;7709:80:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7800:17;7819;7841:13;:11;:13::i;:::-;7799:55;;;;;7900:9;-1:-1:-1;;;;;7887:22:1;:10;:22;:48;;;;;7926:9;-1:-1:-1;;;;;7913:22:1;:10;:22;7887:48;7879:92;;;;;-1:-1:-1;;;7879:92:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;8111:6;;8145;;7982:13;;;;-1:-1:-1;;;;;8111:6:1;;;;8145;;;;8169:13;;;;;;;:30;;;8192:7;-1:-1:-1;;;;;8186:13:1;:2;-1:-1:-1;;;;;8186:13:1;;;8169:30;8161:62;;;;;-1:-1:-1;;;8161:62:1;;;;;;;;;;;;-1:-1:-1;;;8161:62:1;;;;;;;;;;;;;;;8237:14;;8233:58;;8253:38;8267:7;8276:2;8280:10;8253:13;:38::i;:::-;8339:14;;8335:58;;8355:38;8369:7;8378:2;8382:10;8355:13;:38::i;:::-;8441:15;;8437:89;;8469:2;-1:-1:-1;;;;;8458:26:1;;8485:10;8497;8509;8521:4;;8458:68;;;;;;;;;;;;;-1:-1:-1;;;;;8458:68:1;-1:-1:-1;;;;;8458:68:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;8458:68:1;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8458:68:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8458:68:1;;;;8437:89;8547:40;;;-1:-1:-1;;;8547:40:1;;8581:4;8547:40;;;;;;-1:-1:-1;;;;;8547:25:1;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;8547:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8547:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8547:40:1;8608;;;-1:-1:-1;;;8608:40:1;;8642:4;8608:40;;;;;;8547;;-1:-1:-1;;;;;;8608:25:1;;;;;:40;;;;;8547;;8608;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;8608:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8608:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8608:40:1;;-1:-1:-1;8668:14:1;;-1:-1:-1;;;;;;;8696:22:1;;;;;8685:33;;:75;;8759:1;8685:75;;;8745:10;8733:9;-1:-1:-1;;;;;8733:22:1;;8721:8;:35;8685:75;8668:92;;8770:14;8810:10;8798:9;-1:-1:-1;;;;;8798:22:1;;8787:8;:33;:75;;8861:1;8787:75;;;8847:10;8835:9;-1:-1:-1;;;;;8835:22:1;;8823:8;:35;8787:75;8770:92;;8892:1;8880:9;:13;:30;;;;8909:1;8897:9;:13;8880:30;8872:77;;;;-1:-1:-1;;;8872:77:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9033:21;9057:40;9080:16;:9;9094:1;9080:16;:13;:16;:::i;:::-;9057:18;:8;9070:4;9057:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;9033:64;-1:-1:-1;9107:21:1;9131:40;9154:16;:9;9168:1;9154:16;:13;:16;:::i;9131:40::-;9107:64;-1:-1:-1;9231:43:1;9266:7;9231:30;-1:-1:-1;;;;;9231:15:1;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;9189:38;:16;9210;9189:38;:20;:38;:::i;:::-;:85;;9181:108;;;;;-1:-1:-1;;;9181:108:1;;;;;;;;;;;;-1:-1:-1;;;9181:108:1;;;;;;;;;;;;;;;1521:1;;9310:49;9318:8;9328;9338:9;9349;9310:7;:49::i;:::-;9374:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9374:66:1;;;9379:10;;9374:66;;;;;;;;;-1:-1:-1;;1543:1:1;1532:8;:12;-1:-1:-1;;;;;;;;;7604:1843:1:o;483:50:0:-;;;;;;;;;;;;;;-1:-1:-1;;;483:50:0;;;;:::o;1557:227:1:-;1689:8;;-1:-1:-1;;;;;1689:8:1;;;;-1:-1:-1;;;1719:8:1;;;;;;-1:-1:-1;;;1759:18:1;;;;;1557:227::o;2484:144:0:-;2548:4;2564:36;2573:10;2585:7;2594:5;2564:8;:36::i;:::-;-1:-1:-1;2617:4:0;2484:144;;;;;:::o;867:21:1:-;;;-1:-1:-1;;;;;867:21:1;;:::o;626:24:0:-;;;;:::o;2776:295::-;-1:-1:-1;;;;;2874:15:0;;2854:4;2874:15;;;:9;:15;;;;;;;;2890:10;2874:27;;;;;;;;-1:-1:-1;;2874:39:0;2870:138;;-1:-1:-1;;;;;2959:15:0;;;;;;:9;:15;;;;;;;;2975:10;2959:27;;;;;;;;:38;;2991:5;2959:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;2929:15:0;;;;;;:9;:15;;;;;;;;2945:10;2929:27;;;;;;;:68;2870:138;3017:26;3027:4;3033:2;3037:5;3017:9;:26::i;:::-;-1:-1:-1;3060:4:0;2776:295;;;;;:::o;912:108::-;954:66;912:108;:::o;585:35::-;618:2;585:35;:::o;771:31::-;;;;:::o;2587:204:1:-;2682:7;;-1:-1:-1;;;;;2682:7:1;2668:10;:21;2660:52;;;;;-1:-1:-1;;;2660:52:1;;;;;;;;;;;;-1:-1:-1;;;2660:52:1;;;;;;;;;;;;;;;2742:6;:16;;-1:-1:-1;;;;;2742:16:1;;;-1:-1:-1;;;;;;2742:16:1;;;;;;;2768:6;:16;;;;;;;;;;;2587:204::o;1211:32::-;;;;:::o;1249:::-;;;;:::o;4727:1217::-;4776:14;1456:8;;1468:1;1456:13;1448:41;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;;;;1510:1;1499:8;:12;;;1510:1;4844:13;:11;:13::i;:::-;-1:-1:-1;4905:6:1;;4898:39;;;-1:-1:-1;;;4898:39:1;;4931:4;4898:39;;;;;;4802:55;;-1:-1:-1;4802:55:1;;-1:-1:-1;4882:13:1;;-1:-1:-1;;;;;4905:6:1;;;;4898:24;;:39;;;;;;;;;;;;;;4905:6;4898:39;;;5:2:-1;;;;30:1;27;20:12;5:2;4898:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4898:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4898:39:1;4970:6;;4963:39;;;-1:-1:-1;;;4963:39:1;;4996:4;4963:39;;;;;;4898;;-1:-1:-1;4947:13:1;;-1:-1:-1;;;;;4970:6:1;;;;4963:24;;:39;;;;;4898;;4963;;;;;;;;4970:6;4963:39;;;5:2:-1;;;;30:1;27;20:12;5:2;4963:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4963:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4963:39:1;;-1:-1:-1;5012:12:1;5027:23;:8;-1:-1:-1;;;;;5027:23:1;;;:12;:23;:::i;:::-;5012:38;-1:-1:-1;5060:12:1;5075:23;:8;-1:-1:-1;;;;;5075:23:1;;;:12;:23;:::i;:::-;5060:38;;5109:10;5122:30;5131:9;5142;5122:8;:30::i;:::-;5162:17;5182:11;5109:43;;-1:-1:-1;5285:17:1;5281:347;;5330:54;733:5;5330:31;5340:20;:7;5352;5340:20;:11;:20;:::i;:::-;5330:9;:31::i;:54::-;5318:66;;5397:36;5411:1;733:5;5397;:36::i;:::-;5281:347;;;5531:86;-1:-1:-1;;;;;5540:37:1;;:25;:7;5552:12;5540:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;5579:37:1;;:25;:7;5591:12;5579:25;:11;:25;:::i;:::-;:37;;;;;;5531:8;:86::i;:::-;5519:98;;5281:347;5657:1;5645:9;:13;5637:64;;;;-1:-1:-1;;;5637:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5711:20;5717:2;5721:9;5711:5;:20::i;:::-;5742:49;5750:8;5760;5770:9;5781;5742:7;:49::i;:::-;5805:5;5801:47;;;5839:8;;5820:28;;-1:-1:-1;;;;;5825:8:1;;;;-1:-1:-1;;;5839:8:1;;;5820:28;:18;:28;:::i;:::-;5812:5;:36;5801:47;5903:34;;;;;;;;;;;;;;5908:10;;5903:34;;;;;;;;-1:-1:-1;;1543:1:1;1532:8;:12;-1:-1:-1;4727:1217:1;;;-1:-1:-1;;;;;;4727:1217:1:o;656:41:0:-;;;;;;;;;;;;;:::o;1287:17:1:-;;;;:::o;1026:38:0:-;;;;;;;;;;;;;:::o;6053:1442:1:-;6102:12;6116;1456:8;;1468:1;1456:13;1448:41;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;;;;1510:1;1499:8;:12;;;1510:1;6182:13;:11;:13::i;:::-;-1:-1:-1;6238:6:1;;6318;;6396:40;;;-1:-1:-1;;;6396:40:1;;6430:4;6396:40;;;;;;6140:55;;-1:-1:-1;6140:55:1;;-1:-1:-1;;;;;;6238:6:1;;;;6318;;;6220:15;;6238:6;;6396:25;;:40;;;;;;;;;;;;;;6238:6;6396:40;;;5:2:-1;;;;30:1;27;20:12;5:2;6396:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6396:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6396:40:1;6462;;;-1:-1:-1;;;6462:40:1;;6496:4;6462:40;;;;;;6396;;-1:-1:-1;6446:13:1;;-1:-1:-1;;;;;6462:25:1;;;;;:40;;;;;6396;;6462;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;6462:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6462:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6462:40:1;6547:4;6512:14;6529:24;;;:9;6462:40;6529:24;;;;;6462:40;;-1:-1:-1;6577:30:1;6586:9;6597;6577:8;:30::i;:::-;6617:17;6637:11;6564:43;;-1:-1:-1;6637:11:1;6746:23;:9;6760:8;6746:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;6878:12:1;6852:23;:9;6866:8;6852:23;:13;:23;:::i;:::-;:38;;;;;;6842:48;;6966:1;6956:7;:11;:26;;;;;6981:1;6971:7;:11;6956:26;6948:77;;;;-1:-1:-1;;;6948:77:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7035:31;7049:4;7056:9;7035:5;:31::i;:::-;7076:35;7090:7;7099:2;7103:7;7076:13;:35::i;:::-;7121;7135:7;7144:2;7148:7;7121:13;:35::i;:::-;7177:40;;;-1:-1:-1;;;7177:40:1;;7211:4;7177:40;;;;;;-1:-1:-1;;;;;7177:25:1;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;7177:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7177:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7177:40:1;7238;;;-1:-1:-1;;;7238:40:1;;7272:4;7238:40;;;;;;7177;;-1:-1:-1;;;;;;7238:25:1;;;;;:40;;;;;7177;;7238;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;7238:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7238:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7238:40:1;;-1:-1:-1;7289:49:1;7297:8;7238:40;7317:9;7328;7289:7;:49::i;:::-;7352:5;7348:47;;;7386:8;;7367:28;;-1:-1:-1;;;;;7372:8:1;;;;-1:-1:-1;;;7386:8:1;;;7367:28;:18;:28;:::i;:::-;7359:5;:36;7348:47;7450:38;;;;;;;;;;;;;;-1:-1:-1;;;;;7450:38:1;;;7455:10;;7450:38;;;;;;;;;;;1521:1;;;;;;;;;1543;1532:8;:12;;;;6053:1442;;;:::o;539:40:0:-;;;;;;;;;;;;;;-1:-1:-1;;;539:40:0;;;;:::o;2634:136::-;2694:4;2710:32;2720:10;2732:2;2736:5;2710:9;:32::i;692:46:1:-;733:5;692:46;:::o;9493:329::-;1456:8;;1468:1;1456:13;1448:41;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;;;;1510:1;1499:8;:12;9561:6;;9610;;9713:8;;9668:40;;;-1:-1:-1;;;9668:40:1;;9702:4;9668:40;;;;;;-1:-1:-1;;;;;9561:6:1;;;;9610;;;;9641:82;;9561:6;;9664:2;;9668:54;;-1:-1:-1;;;;;9713:8:1;;9561:6;;9668:25;;:40;;;;;;;;;;;;;;;9561:6;9668:40;;;5:2:-1;;;;30:1;27;20:12;5:2;9668:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9668:40:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9668:40:1;;:54;:44;:54;:::i;:::-;9641:13;:82::i;:::-;9805:8;;9760:40;;;-1:-1:-1;;;9760:40:1;;9794:4;9760:40;;;;;;9733:82;;9747:7;;9756:2;;9760:54;;-1:-1:-1;;;9805:8:1;;-1:-1:-1;;;;;9805:8:1;;-1:-1:-1;;;;;9760:25:1;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;9733:82:1;-1:-1:-1;;1543:1:1;1532:8;:12;-1:-1:-1;9493:329:1:o;839:22::-;;;-1:-1:-1;;;;;839:22:1;;:::o;894:21::-;;;-1:-1:-1;;;;;894:21:1;;:::o;3077:658:0:-;3222:15;3210:8;:27;;3202:56;;;;;-1:-1:-1;;;3202:56:0;;;;;;;;;;;;-1:-1:-1;;;3202:56:0;;;;;;;;;;;;;;;3370:16;;-1:-1:-1;;;;;3465:13:0;;;3268:14;3465:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3414:77;;954:66;3414:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3414:77:0;;;;;3404:88;;;;;;-1:-1:-1;;;3308:198:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3308:198:0;;;;;;3285:231;;;;;;;;;3553:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:14;;3465:15;3553:26;;;;;-1:-1:-1;;3553:26:0;;;;;;;;;;3465:15;3553:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3553:26:0;;-1:-1:-1;;3553:26:0;;;-1:-1:-1;;;;;;;3597:30:0;;;;;;:59;;;3651:5;-1:-1:-1;;;;;3631:25:0;:16;-1:-1:-1;;;;;3631:25:0;;3597:59;3589:98;;;;;-1:-1:-1;;;3589:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:31;3706:5;3713:7;3722:5;3697:8;:31::i;:::-;3077:658;;;;;;;;;:::o;703:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9868:156:1:-;1456:8;;1468:1;1456:13;1448:41;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;-1:-1:-1;;;1448:41:1;;;;;;;;;;;;;;;1510:1;1499:8;:12;9923:6;;9916:39;;;-1:-1:-1;;;9916:39:1;;9949:4;9916:39;;;;;;9908:109;;-1:-1:-1;;;;;9923:6:1;;9916:24;;:39;;;;;;;;;;;;;;9923:6;9916:39;;;5:2:-1;;;;30:1;27;20:12;5:2;9916:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9916:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9916:39:1;9964:6;;9957:39;;;-1:-1:-1;;;9957:39:1;;9990:4;9957:39;;;;;;-1:-1:-1;;;;;9964:6:1;;;;9957:24;;:39;;;;;9916;;9957;;;;;;;;9964:6;9957:39;;;5:2:-1;;;;30:1;27;20:12;5:2;9957:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9957:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9957:39:1;9998:8;;-1:-1:-1;;;;;9998:8:1;;;;-1:-1:-1;;;10008:8:1;;;9908:7;:109::i;:::-;1543:1;1532:8;:12;9868:156::o;1790:282::-;796:34;;;;;;;;;;;;;;;;;1917:43;;-1:-1:-1;;;;;1917:43:1;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1917:43:1;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1906:55:1;;;;1871:12;;1885:17;;1906:10;;;1917:43;1906:55;;;25:18:-1;1906:55:1;;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;;;1906:55:1;;;;;;;;;;;;;;;;;;;;;;;;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;;1870:91:1;;;;1979:7;:57;;;;-1:-1:-1;1991:11:1;;:16;;:44;;;2022:4;2011:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2011:24:1;1991:44;1971:94;;;;;-1:-1:-1;;;1971:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1790:282;;;;;:::o;420:140:8:-;472:6;498;;;:30;;-1:-1:-1;;513:5:8;;;527:1;522;513:5;522:1;508:15;;;;;:20;498:30;490:63;;;;;-1:-1:-1;;;490:63:8;;;;;;;;;;;;-1:-1:-1;;;490:63:8;;;;;;;;;;;;;;287:127;370:5;;;365:16;;;;357:50;;;;;-1:-1:-1;;;357:50:8;;;;;;;;;;;;-1:-1:-1;;;357:50:8;;;;;;;;;;;;;;2873:845:1;-1:-1:-1;;;;;2984:23:1;;;;;:50;;-1:-1:-1;;;;;;3011:23:1;;;2984:50;2976:80;;;;;-1:-1:-1;;;2976:80:1;;;;;;;;;;;;-1:-1:-1;;;2976:80:1;;;;;;;;;;;;;;;3169:18;;3097:23;:15;:23;;;-1:-1:-1;;;3169:18:1;;;;3152:35;;;3224:15;;;;;;:33;;-1:-1:-1;;;;;;3243:14:1;;;;3224:33;:51;;;;-1:-1:-1;;;;;;3261:14:1;;;;3224:51;3220:332;;;3428:11;3375:64;;3380:44;3414:9;3380:27;3397:9;3380:16;:27::i;:::-;-1:-1:-1;;;;;3380:33:1;;:44;:33;:44;:::i;:::-;3351:20;:88;;-1:-1:-1;;;;;3375:50:1;;;;:64;;;;3351:88;;;3477:64;;;3482:44;3516:9;3482:27;3499:9;3482:16;:27::i;:44::-;3453:20;:88;;-1:-1:-1;;;;;3477:50:1;;;;:64;;;;3453:88;;;3220:332;3561:8;:28;;-1:-1:-1;;3561:28:1;-1:-1:-1;;;;;3561:28:1;;;;;;;-1:-1:-1;;;;3599:28:1;-1:-1:-1;;;3599:28:1;;;;;;;;;-1:-1:-1;;;;;3637:35:1;-1:-1:-1;;;3637:35:1;;;;;;;;;3687:24;;;3692:8;;;3687:24;;3702:8;;;;;;;3687:24;;;;;;;;;;;;;;;;;2873:845;;;;;;:::o;2090:166:0:-;-1:-1:-1;;;;;2170:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2218:31;;;;;;;;;;;;;;;;;2090:166;;;:::o;2262:216::-;-1:-1:-1;;;;;2355:15:0;;;;;;:9;:15;;;;;;:26;;2375:5;2355:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;2337:15:0;;;;;;;:9;:15;;;;;;:44;;;;2407:13;;;;;;;:24;;2425:5;2407:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;2391:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2446:25;;;;;;;2391:13;;2446:25;;;;;;;;;;;;;2262:216;;;:::o;3805:813:1:-;3878:10;3900:13;3928:7;;;;;;;;;-1:-1:-1;;;;;3928:7:1;-1:-1:-1;;;;;3916:26:1;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3916:28:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3916:28:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3916:28:1;4005:5;;-1:-1:-1;;;;;3962:19:1;;;;;;-1:-1:-1;3916:28:1;;-1:-1:-1;4005:5:1;4035:577;;4064:11;;4060:485;;4095:10;4108:41;4118:30;-1:-1:-1;;;;;4118:15:1;;;;:30;;;:19;:30;:::i;4108:41::-;4095:54;;4167:14;4184:17;4194:6;4184:9;:17::i;:::-;4167:34;;4231:9;4223:5;:17;4219:312;;;4264:14;4281:37;4297:20;:5;4307:9;4297:20;:9;:20;:::i;:::-;4281:11;;;:37;:15;:37;:::i;:::-;4264:54;-1:-1:-1;4340:16:1;4359:27;4376:9;4359:12;:5;4369:1;4359:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;4340:46;;4408:14;4437:11;4425:9;:23;;;;;;;-1:-1:-1;4474:13:1;;4470:42;;4489:23;4495:5;4502:9;4489:5;:23::i;:::-;4219:312;;;;4060:485;;;4035:577;;;4565:11;;4561:51;;4600:1;4592:5;:9;4561:51;3805:813;;;;;;:::o;307:292:7:-;352:6;378:1;374;:5;370:223;;;-1:-1:-1;399:1:7;431;427;423:5;;:9;446:89;457:1;453;:5;446:89;;;482:1;478:5;;519:1;514;510;506;:5;;;;;;:9;505:15;;;;;;501:19;;446:89;;;370:223;;;;555:6;;551:42;;-1:-1:-1;581:1:7;551:42;307:292;;;:::o;1676:197:0:-;1748:11;;:22;;1764:5;1748:22;:15;:22;:::i;:::-;1734:11;:36;;;-1:-1:-1;;;;;1796:13:0;;;;:9;:13;;;;;;:24;;1814:5;1796:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;1780:13:0;;;;;;:9;:13;;;;;;;;:40;;;;1835:31;;;;;;;1780:13;;;;1835:31;;;;;;;;;;1676:197;;:::o;98:94:7:-;150:6;176:1;172;:5;:13;;184:1;172:13;;;180:1;172:13;168:17;98:94;-1:-1:-1;;;98:94:7:o;1879:205:0:-;-1:-1:-1;;;;;1957:15:0;;;;;;:9;:15;;;;;;:26;;1977:5;1957:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;1939:15:0;;;;;;:9;:15;;;;;:44;;;;2007:11;:22;;2023:5;2007:22;:15;:22;:::i;:::-;1993:11;:36;;;2044:33;;;;;;;;-1:-1:-1;;;;;2044:33:0;;;;;;;;;;;;;1879:205;;:::o;283:118:9:-;-1:-1:-1;;;;;358:10:9;-1:-1:-1;;;358:17:9;;283:118::o;469:106::-;529:9;-1:-1:-1;;;;;558:10:9;;-1:-1:-1;;;;;554:14:9;;558:10;554:14;;;;;;469:106;-1:-1:-1;;;469:106:9:o;155:126:8:-;238:5;;;233:16;;;;225:49;;;;;-1:-1:-1;;;225:49:8;;;;;;;;;;;;-1:-1:-1;;;225:49:8;;;;;;;;;;;;;

Swarm Source

bzzr://31d3e6c9e68f56739306d3a26b603704ef6ca3724b6bcaa96561ff6fb31a165e
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.