Contract 0xa5e5eeB6b51fa0fDc59915C81d75C83470BFA4f0

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xbac9f9d5d52c20fdc5cf90b046348d0ef9387f324ab227604f86d2612876635452450762021-02-27 13:47:062 hrs 46 mins ago0x80c96d16c0f370cb8cc06c437d8a966f4c9fa1af IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0xa9f7f3d8245657ce0a27f859eda0392a44b29c9b43a01eb1e27aaff82f0be5b752294762021-02-27 0:46:3515 hrs 47 mins ago0x58b311908ef0cfc304b603e94bb0d10afca3a93f IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0xd6ff37c90268879f0f4e92d48fdaeeae4f28f862d8043e85ee36cc9b9816d17052294742021-02-27 0:46:2915 hrs 47 mins ago0x58b311908ef0cfc304b603e94bb0d10afca3a93f IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x6de1899cdc4762db0eca8544250f24726cc2c1a3049d68856457d05382f1bdf852207592021-02-26 17:27:1323 hrs 6 mins ago0xb12cceb1e1294f617e716d37408ba7be9b0176cc IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0xc14875dbe3bbc0ec080c42e28d8d1007af085552bebe395a14e33ba7d60b398252204922021-02-26 17:13:5223 hrs 20 mins ago0x890dd83fcf4679ec87cd0f143a4bae6482cc3511 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x78a463c57b3baddbf19cd10b687883c1ccac12e99922aa4f3220b5e910aee81e52172222021-02-26 14:29:151 day 2 hrs ago0x251fa89b5430ab0f0dcf0779000b48e70e9a7c6e IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x7b3288cb9aadc4d4ffa6a7873edaf1b118038b81fcef30384fbc22f5d113581252172152021-02-26 14:28:541 day 2 hrs ago0x251fa89b5430ab0f0dcf0779000b48e70e9a7c6e IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0xb9c951d5fea96a4f8735ca1a044998562cda60f01f978b545be7834b7c28d64152162632021-02-26 13:41:161 day 2 hrs ago0x44976bfeac0784b8c2395a6ae9d62c468075d336 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x6db359b140ba29a6d0b192276a3596f600b9fae24829d3c4f5da77d03373838e52125492021-02-26 10:35:341 day 5 hrs ago0x6c03fa7954835b1fe0aacfbc7f643be4f071b101 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0xe83cad4e29bccca0a669c17e91dd35635773d90411c438f03c770279a07c8d6f52088962021-02-26 7:32:131 day 9 hrs ago0x40c00e5e183e70a8cef4fe0a0692bea98bd3a84e IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0xfc89563570bef39e1f2876c0ecb0ecb2e19c81f951367b11c607b5264621f28c51775332021-02-25 5:18:192 days 11 hrs ago0x8271ef8441733d8543320830582982cb4b115fc3 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x661bb464623ec23abc7894c0db413c01bc6d58ac97a0b7b4979e5c1c040340fe51762092021-02-25 4:12:072 days 12 hrs ago0x70f65a050ddf1af785cabe1dc658809851003699 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x9e53d97f3a29a0151eb64dbf367153ec82f7079ed5c4c7a62a36b1c4f5a7b82051597672021-02-24 14:28:013 days 2 hrs ago0xd95adb1ccb95e7e147096b04bbd6ba65ccef01aa IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x570789eb89d6916011d6e5a77132645961a2dfee1c6ae9772c73c77e25ee402051269862021-02-23 11:02:114 days 5 hrs ago0x1ec61779a9fdbd4ac7b68d3fc45d98de56c7f0ff IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00025154
0x201bafa30e470cbf73481d620f8105719ddd76b9be26434d862fcf602c85939b51269822021-02-23 11:01:594 days 5 hrs ago0x1ec61779a9fdbd4ac7b68d3fc45d98de56c7f0ff IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x136cdf9e9b209c3f10e3581b11bb4d67836f46422f9570b76f44a55d4f9b1bce51203742021-02-23 5:23:424 days 11 hrs ago0x2d4888499d765d387f9cbc48061b28cde6bc2601 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x6179de01ed506ec5d41c97d4586444bf7c1848041e4bac3c506ddb5b4772abec51132172021-02-22 23:21:564 days 17 hrs ago0x04be8c6d71080b6e546f5960255950940415a4a7 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x1dcd7ea9eefce4366d31507a3653255cc5662ebbb925599e5156e90a507ccf3251132152021-02-22 23:21:504 days 17 hrs ago0x04be8c6d71080b6e546f5960255950940415a4a7 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0x6d76d715275a2cd43e836805bf1fafb7727f269b99d303d20fcd9d6d5468ade351051292021-02-22 16:36:574 days 23 hrs ago0x7f9d39de53a3036463146e91e921cc9fbfcb2de4 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0xb05d65580757f6b021daf40dd6d53eed4cccd31e289b9718d490149c464b867150862492021-02-22 0:42:525 days 15 hrs ago0x80c96d16c0f370cb8cc06c437d8a966f4c9fa1af IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.0004409
0xa03f0d15dd3c88808c2ed68d78b2386fa0aabe8cabd1289a25fcb2a9c5b5104450840942021-02-21 22:54:315 days 17 hrs ago0x741a86d11d7ead9de92cc46065cfca71ca3f8402 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x7c53a6bff0460d9a3ffc998f9dbed142bcebd362ebf08ba1dc0986b4c127c7d650840412021-02-21 22:51:525 days 17 hrs ago0x741a86d11d7ead9de92cc46065cfca71ca3f8402 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x276c72269ba6af095b3d922ba66382ccfbfe6ad0390abcec61617d52eed065d750764022021-02-21 16:21:136 days 12 mins ago0x9f87c922d40d2e822e0d732b59aea84939f44526 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00044354
0x3de1ca0e38be830ff446bea5ed7fcb629d6eaad89f068d4fc50ded34daa2be6450707112021-02-21 11:25:106 days 5 hrs ago0x78f6c2458b53d0735208992c693bb2b2dafebb52 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
0xd97ca23931874b9e1391e20e5900e4a4115aec5aa6b5350729fa5bc747b0771350706962021-02-21 11:24:256 days 5 hrs ago0x78f6c2458b53d0735208992c693bb2b2dafebb52 IN  0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB0.00014485
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x8d976bd6ecdae6102701e41781f79d04784d3633d7918d425d4d90a007e5926852481272021-02-27 16:19:4914 mins ago 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f0 Binance: WBNB Token0 BNB
0x8d976bd6ecdae6102701e41781f79d04784d3633d7918d425d4d90a007e5926852481272021-02-27 16:19:4914 mins ago 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f0 Thugs: GUNS Token0 BNB
0x8d976bd6ecdae6102701e41781f79d04784d3633d7918d425d4d90a007e5926852481272021-02-27 16:19:4914 mins ago 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f0 Binance: WBNB Token0 BNB
0x8d976bd6ecdae6102701e41781f79d04784d3633d7918d425d4d90a007e5926852481272021-02-27 16:19:4914 mins ago StreetSwap: Router 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0x8d976bd6ecdae6102701e41781f79d04784d3633d7918d425d4d90a007e5926852481272021-02-27 16:19:4914 mins ago StreetSwap: Router 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0x2904e558b75e113a146e789fd7883197c6277435d46f04ef94ec1d2eb33120b452477612021-02-27 16:01:3132 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0x2904e558b75e113a146e789fd7883197c6277435d46f04ef94ec1d2eb33120b452477612021-02-27 16:01:3132 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0x893225da6ab5fdcf9143a829ed4f56d400f3c82de034f3da79753e470faf29e752475662021-02-27 15:51:4642 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xfd3b81e7bfaa165a4983c97ea724c8cb33aac577a228dde174614ce8438f657252460542021-02-27 14:36:021 hr 57 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0x4f33059add366ca2634c8131ac42a8672d9775427f9f085f007127f85ccc854752453192021-02-27 13:59:152 hrs 34 mins ago 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f0 Binance: WBNB Token0 BNB
0x4f33059add366ca2634c8131ac42a8672d9775427f9f085f007127f85ccc854752453192021-02-27 13:59:152 hrs 34 mins ago 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f0 Thugs: GUNS Token0 BNB
0x4f33059add366ca2634c8131ac42a8672d9775427f9f085f007127f85ccc854752453192021-02-27 13:59:152 hrs 34 mins ago 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f0 Binance: WBNB Token0 BNB
0x4f33059add366ca2634c8131ac42a8672d9775427f9f085f007127f85ccc854752453192021-02-27 13:59:152 hrs 34 mins ago StreetSwap: Router 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0x4f33059add366ca2634c8131ac42a8672d9775427f9f085f007127f85ccc854752453192021-02-27 13:59:152 hrs 34 mins ago StreetSwap: Router 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0x68ae2ab6448884714ddf11c8d55ea7578c65d502 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0x68ae2ab6448884714ddf11c8d55ea7578c65d502 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0xe79ff4c4e1d78a483c63583330dcc7319f05afdf 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0xe79ff4c4e1d78a483c63583330dcc7319f05afdf 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0xe79ff4c4e1d78a483c63583330dcc7319f05afdf 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0x68ae2ab6448884714ddf11c8d55ea7578c65d502 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0x68ae2ab6448884714ddf11c8d55ea7578c65d502 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xf3882455f93e03b56ac4ebc5ff4c90ca448276bc1194dd626bd18dcd33d2389352441012021-02-27 12:58:103 hrs 35 mins ago 0xe79ff4c4e1d78a483c63583330dcc7319f05afdf 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
0xa2cda7f5343bd568091de71544d73a8d55f2f2487faef2d0b503822551c92e1152429412021-02-27 12:00:094 hrs 33 mins ago 0x03edb31becc296d45670790c947150dafec2e238 0xa5e5eeb6b51fa0fdc59915c81d75c83470bfa4f00 BNB
[ Download CSV Export 
Loading

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

Contract Name:
ThugswapPair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-11-12
*/

// File: contracts/swap/libraries/SafeMath.sol

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity =0.6.12;

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

library SafeMathThugswap {
    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/swap/ThugswapBEP20.sol

pragma solidity =0.6.12;


contract ThugswapBEP20 {
    using SafeMathThugswap for uint;

    string public constant name = 'Thugswap Street LP';
    string public constant symbol = 'TLP';
    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, 'Thugswap: 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, 'Thugswap: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

// File: contracts/swap/libraries/Math.sol

pragma solidity =0.6.12;

// 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/swap/libraries/UQ112x112.sol

pragma solidity =0.6.12;

// 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/swap/interfaces/IBEP20.sol

pragma solidity >=0.5.0;

interface IBEP20Thugswap {
    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/swap/interfaces/IThugswapFactory.sol

pragma solidity >=0.5.0;

interface IThugswapFactory {
    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/swap/interfaces/IThugswapCallee.sol

pragma solidity >=0.5.0;

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

// File: contracts/swap/ThugswapPair.sol

pragma solidity =0.6.12;







contract ThugswapPair is ThugswapBEP20 {
    using SafeMathThugswap  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, 'Thugswap: 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))), 'Thugswap: 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, 'Thugswap: 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), 'Thugswap: 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/4th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IThugswapFactory(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 = IBEP20Thugswap(token0).balanceOf(address(this));
        uint balance1 = IBEP20Thugswap(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, 'Thugswap: 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 = IBEP20Thugswap(_token0).balanceOf(address(this));
        uint balance1 = IBEP20Thugswap(_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, 'Thugswap: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IBEP20Thugswap(_token0).balanceOf(address(this));
        balance1 = IBEP20Thugswap(_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, 'Thugswap: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Thugswap: 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, 'Thugswap: 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) IThugswapCallee(to).ThugswapCall(msg.sender, amount0Out, amount1Out, data);
        balance0 = IBEP20Thugswap(_token0).balanceOf(address(this));
        balance1 = IBEP20Thugswap(_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, 'Thugswap: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'Thugswap: 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, IBEP20Thugswap(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IBEP20Thugswap(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external lock {
        _update(IBEP20Thugswap(token0).balanceOf(address(this)), IBEP20Thugswap(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}

Contract ABI

[{"inputs":[],"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"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b5060408051808201825260128152710546875677377617020537472656574204c560741b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f6a63a9232232e5a6bf3bbcb1673e41f9e34693c1c85b93b2d6e56565d43b1353818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556121be806101106000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610ade565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b0c565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b36565b604080519115158252519081900360200190f35b610339610b4d565b604080516001600160a01b039092168252519081900360200190f35b61035d610b5c565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b62565b61035d610bf6565b6103b5610c1a565b6040805160ff9092168252519081900360200190f35b61035d610c1f565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c25565b61035d610ca8565b61035d610cae565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cb4565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f8f565b61035d610fa1565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610fa7565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fb9565b6040805192835260208301919091528051918290030190f35b61024461134c565b61031d600480360360408110156104e857600080fd5b506001600160a01b03813516906020013561136b565b61035d611378565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b031661137e565b6103396114ef565b6103396114fe565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561150d565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661170e565b61023a61172b565b600c5460011461060d576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55841515806106205750600084115b61065b5760405162461bcd60e51b81526004018080602001828103825260248152602001806121176024913960400191505060405180910390fd5b600080610666610b0c565b5091509150816001600160701b03168710801561068b5750806001600160701b031686105b6106dc576040805162461bcd60e51b815260206004820181905260248201527f54687567737761703a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b60065460075460009182916001600160a01b0391821691908116908916821480159061071a5750806001600160a01b0316896001600160a01b031614155b610762576040805162461bcd60e51b815260206004820152601460248201527354687567737761703a20494e56414c49445f544f60601b604482015290519081900360640190fd5b8a1561077357610773828a8d61188c565b891561078457610784818a8c61188c565b861561083657886001600160a01b031663cce38761338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087c57600080fd5b505afa158015610890573d6000803e3d6000fd5b505050506040513d60208110156108a657600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f257600080fd5b505afa158015610906573d6000803e3d6000fd5b505050506040513d602081101561091c57600080fd5b5051925060009150506001600160701b0385168a9003831161093f57600061094e565b89856001600160701b03160383035b9050600089856001600160701b031603831161096b57600061097a565b89856001600160701b03160383035b9050600082118061098b5750600081115b6109c65760405162461bcd60e51b81526004018080602001828103825260238152602001806120f46023913960400191505060405180910390fd5b60006109e86109d6846003611a26565b6109e2876103e8611a26565b90611a89565b905060006109fa6109d6846003611a26565b9050610a1f620f4240610a196001600160701b038b8116908b16611a26565b90611a26565b610a298383611a26565b1015610a6a576040805162461bcd60e51b815260206004820152600b60248201526a54687567737761703a204b60a81b604482015290519081900360640190fd5b5050610a7884848888611ad9565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b604051806040016040528060128152602001710546875677377617020537472656574204c560741b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b43338484611c97565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610be1576001600160a01b0384166000908152600260209081526040808320338452909152902054610bbc9083611a89565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bec848484611cf9565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c7a576040805162461bcd60e51b81526020600482015260136024820152722a343ab3b9bbb0b81d102327a92124a22222a760691b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d00576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580610d10610b0c565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d6457600080fd5b505afa158015610d78573d6000803e3d6000fd5b505050506040513d6020811015610d8e57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d6020811015610e0b57600080fd5b505190506000610e24836001600160701b038716611a89565b90506000610e3b836001600160701b038716611a89565b90506000610e498787611da7565b60005490915080610e8057610e6c6103e86109e2610e678787611a26565b611ee7565b9850610e7b60006103e8611f39565b610ec3565b610ec06001600160701b038916610e978684611a26565b81610e9e57fe5b046001600160701b038916610eb38685611a26565b81610eba57fe5b04611fc3565b98505b60008911610f025760405162461bcd60e51b81526004018080602001828103825260278152602001806121626027913960400191505060405180910390fd5b610f0c8a8a611f39565b610f1886868a8a611ad9565b8115610f4257600854610f3e906001600160701b0380821691600160701b900416611a26565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611006576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580611016610b0c565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561107257600080fd5b505afa158015611086573d6000803e3d6000fd5b505050506040513d602081101561109c57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d602081101561111457600080fd5b5051306000908152600160205260408120549192506111338888611da7565b600054909150806111448487611a26565b8161114b57fe5b049a50806111598486611a26565b8161116057fe5b04995060008b118015611173575060008a115b6111ae5760405162461bcd60e51b815260040180806020018281038252602781526020018061213b6027913960400191505060405180910390fd5b6111b83084611fdb565b6111c3878d8d61188c565b6111ce868d8c61188c565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d602081101561123e57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561128a57600080fd5b505afa15801561129e573d6000803e3d6000fd5b505050506040513d60208110156112b457600080fd5b505193506112c485858b8b611ad9565b81156112ee576008546112ea906001600160701b0380821691600160701b900416611a26565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060038152602001620544c560ec1b81525081565b6000610b43338484611cf9565b6103e881565b600c546001146113c8576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611471928592879261146c926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d602081101561146457600080fd5b505190611a89565b61188c565b6114e5818461146c6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561143a57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611556576040805162461bcd60e51b8152602060048201526011602482015270151a1d59dcddd85c0e8811561412549151607a1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611671573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116a75750886001600160a01b0316816001600160a01b0316145b6116f8576040805162461bcd60e51b815260206004820152601b60248201527f54687567737761703a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b611703898989611c97565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611775576040805162461bcd60e51b815260206004820152601060248201526f151a1d59dcddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611885926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117c657600080fd5b505afa1580156117da573d6000803e3d6000fd5b505050506040513d60208110156117f057600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561183d57600080fd5b505afa158015611851573d6000803e3d6000fd5b505050506040513d602081101561186757600080fd5b50516008546001600160701b0380821691600160701b900416611ad9565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119395780518252601f19909201916020918201910161191a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461199b576040519150601f19603f3d011682016040523d82523d6000602084013e6119a0565b606091505b50915091508180156119ce5750805115806119ce57508080602001905160208110156119cb57600080fd5b50515b611a1f576040805162461bcd60e51b815260206004820152601960248201527f54687567737761703a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a4157505080820282828281611a3e57fe5b04145b610b47576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b47576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611af757506001600160701b038311155b611b3d576040805162461bcd60e51b815260206004820152601260248201527154687567737761703a204f564552464c4f5760701b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b6d57506001600160701b03841615155b8015611b8157506001600160701b03831615155b15611bec578063ffffffff16611ba985611b9a8661206d565b6001600160e01b03169061207f565b600980546001600160e01b03929092169290920201905563ffffffff8116611bd484611b9a8761206d565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d1c9082611a89565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d4b90826120a4565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611df857600080fd5b505afa158015611e0c573d6000803e3d6000fd5b505050506040513d6020811015611e2257600080fd5b5051600b546001600160a01b038216158015945091925090611ed3578015611ece576000611e5f610e676001600160701b03888116908816611a26565b90506000611e6c83611ee7565b905080821115611ecb576000611e8e611e858484611a89565b60005490611a26565b90506000611ea783611ea1866003611a26565b906120a4565b90506000818381611eb457fe5b0490508015611ec757611ec78782611f39565b5050505b50505b611edf565b8015611edf576000600b555b505092915050565b60006003821115611f2a575080600160028204015b81811015611f2457809150600281828581611f1357fe5b040181611f1c57fe5b049050611efc565b50611f34565b8115611f34575060015b919050565b600054611f4690826120a4565b60009081556001600160a01b038316815260016020526040902054611f6b90826120a4565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611fd25781611fd4565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611ffe9082611a89565b6001600160a01b038316600090815260016020526040812091909155546120259082611a89565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161209c57fe5b049392505050565b80820182811015610b47576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe54687567737761703a20494e53554646494349454e545f494e5055545f414d4f554e5454687567737761703a20494e53554646494349454e545f4f55545055545f414d4f554e5454687567737761703a20494e53554646494349454e545f4c49515549444954595f4255524e454454687567737761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220957517fdaeb94c5dd2a5d1f649c9ad22f73d96868bb4c198004c1923e14d545f64736f6c634300060c0033

Deployed ByteCode Sourcemap

7444:9759:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14680:1898;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14680:1898:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14680:1898:0;;-1:-1:-1;14680:1898:0;-1:-1:-1;14680:1898:0;:::i;:::-;;833:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8454:231;;;:::i;:::-;;;;-1:-1:-1;;;;;8454:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2887:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2887:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7744:21;;;:::i;:::-;;;;-1:-1:-1;;;;;7744:21:0;;;;;;;;;;;;;;976:24;;;:::i;:::-;;;;;;;;;;;;;;;;3189:301;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3189:301:0;;;;;;;;;;;;;;;;;:::i;1268:108::-;;;:::i;934:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1125:31;;;:::i;9513:209::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9513:209:0;;;;;;;;;;:::i;8095:32::-;;;:::i;8134:::-;;;:::i;11704:1255::-;;;;;;;;;;;;;;;;-1:-1:-1;11704:1255:0;-1:-1:-1;;;;;11704:1255:0;;:::i;1007:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1007:41:0;-1:-1:-1;;;;;1007:41:0;;:::i;8173:17::-;;;:::i;1383:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1383:38:0;-1:-1:-1;;;;;1383:38:0;;:::i;13071:1497::-;;;;;;;;;;;;;;;;-1:-1:-1;13071:1497:0;-1:-1:-1;;;;;13071:1497:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;890:37;;;:::i;3042:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3042:139:0;;;;;;;;:::i;7565:46::-;;;:::i;16627:350::-;;;;;;;;;;;;;;;;-1:-1:-1;16627:350:0;-1:-1:-1;;;;;16627:350:0;;:::i;7715:22::-;;;:::i;7772:21::-;;;:::i;3498:672::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3498:672:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1055:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1055:61:0;;;;;;;;;;:::i;17026:174::-;;;:::i;14680:1898::-;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;14794:14;;;;:32:::1;;;14825:1;14812:10;:14;14794:32;14786:81;;;;-1:-1:-1::0;;;14786:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14879:17;14898::::0;14920:13:::1;:11;:13::i;:::-;14878:55;;;;;14980:9;-1:-1:-1::0;;;;;14967:22:0::1;:10;:22;:48;;;;;15006:9;-1:-1:-1::0;;;;;14993:22:0::1;:10;:22;14967:48;14959:93;;;::::0;;-1:-1:-1;;;14959:93:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15197:6;::::0;15232::::1;::::0;15065:13:::1;::::0;;;-1:-1:-1;;;;;15197:6:0;;::::1;::::0;15232;;::::1;::::0;15257:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;15280:7;-1:-1:-1::0;;;;;15274:13:0::1;:2;-1:-1:-1::0;;;;;15274:13:0::1;;;15257:30;15249:63;;;::::0;;-1:-1:-1;;;15249:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15249:63:0;;;;;;;;;;;;;::::1;;15327:14:::0;;15323:58:::1;;15343:38;15357:7;15366:2;15370:10;15343:13;:38::i;:::-;15430:14:::0;;15426:58:::1;;15446:38;15460:7;15469:2;15473:10;15446:13;:38::i;:::-;15533:15:::0;;15529:95:::1;;15566:2;-1:-1:-1::0;;;;;15550:32:0::1;;15583:10;15595;15607;15619:4;;15550:74;;;;;;;;;;;;;-1:-1:-1::0;;;;;15550:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15529:95;15646:48;::::0;;-1:-1:-1;;;15646:48:0;;15688:4:::1;15646:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;15646:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15646:48:0;15716::::1;::::0;;-1:-1:-1;;;15716:48:0;;15758:4:::1;15716:48;::::0;::::1;::::0;;;15646;;-1:-1:-1;;;;;;15716:33:0;::::1;::::0;::::1;::::0;:48;;;;;15646::::1;::::0;15716;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15716:48:0;;-1:-1:-1;15786:14:0::1;::::0;-1:-1:-1;;;;;;;15814:22:0;::::1;::::0;;::::1;15803:33:::0;::::1;:75;;15877:1;15803:75;;;15863:10;15851:9;-1:-1:-1::0;;;;;15851:22:0::1;;15839:8;:35;15803:75;15786:92;;15889:14;15929:10;15917:9;-1:-1:-1::0;;;;;15917:22:0::1;;15906:8;:33;:75;;15980:1;15906:75;;;15966:10;15954:9;-1:-1:-1::0;;;;;15954:22:0::1;;15942:8;:35;15906:75;15889:92;;16012:1;16000:9;:13;:30;;;;16029:1;16017:9;:13;16000:30;15992:78;;;;-1:-1:-1::0;;;15992:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16156:21;16180:40;16203:16;:9:::0;16217:1:::1;16203:13;:16::i;:::-;16180:18;:8:::0;16193:4:::1;16180:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16156:64:::0;-1:-1:-1;16231:21:0::1;16255:40;16278:16;:9:::0;16292:1:::1;16278:13;:16::i;16255:40::-;16231:64:::0;-1:-1:-1;16356:43:0::1;16391:7;16356:30;-1:-1:-1::0;;;;;16356:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;16314:38;:16:::0;16335;16314:20:::1;:38::i;:::-;:85;;16306:109;;;::::0;;-1:-1:-1;;;16306:109:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16306:109:0;;;;;;;;;;;;;::::1;;8414:1;;16439:49;16447:8;16457;16467:9;16478;16439:7;:49::i;:::-;16504:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16504:66:0;::::1;::::0;16509:10:::1;::::0;16504:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8437:1:0;8426:8;:12;-1:-1:-1;;;;;;;;;14680:1898:0:o;833:50::-;;;;;;;;;;;;;;-1:-1:-1;;;833:50:0;;;;:::o;8454:231::-;8587:8;;-1:-1:-1;;;;;8587:8:0;;;;-1:-1:-1;;;8618:8:0;;;;;;-1:-1:-1;;;8659:18:0;;;;;8454:231::o;2887:147::-;2951:4;2968:36;2977:10;2989:7;2998:5;2968:8;:36::i;:::-;-1:-1:-1;3022:4:0;2887:147;;;;;:::o;7744:21::-;;;-1:-1:-1;;;;;7744:21:0;;:::o;976:24::-;;;;:::o;3189:301::-;-1:-1:-1;;;;;3288:15:0;;3267:4;3288:15;;;:9;:15;;;;;;;;3304:10;3288:27;;;;;;;;-1:-1:-1;;3288:39:0;3284:140;;-1:-1:-1;;;;;3374:15:0;;;;;;:9;:15;;;;;;;;3390:10;3374:27;;;;;;;;:38;;3406:5;3374:31;:38::i;:::-;-1:-1:-1;;;;;3344:15:0;;;;;;:9;:15;;;;;;;;3360:10;3344:27;;;;;;;:68;3284:140;3434:26;3444:4;3450:2;3454:5;3434:9;:26::i;:::-;-1:-1:-1;3478:4:0;3189:301;;;;;:::o;1268:108::-;1310:66;1268:108;:::o;934:35::-;967:2;934:35;:::o;1125:31::-;;;;:::o;9513:209::-;9609:7;;-1:-1:-1;;;;;9609:7:0;9595:10;:21;9587:53;;;;;-1:-1:-1;;;9587:53:0;;;;;;;;;;;;-1:-1:-1;;;9587:53:0;;;;;;;;;;;;;;;9671:6;:16;;-1:-1:-1;;;;;9671:16:0;;;-1:-1:-1;;;;;;9671:16:0;;;;;;;9698:6;:16;;;;;;;;;;;9513:209::o;8095:32::-;;;;:::o;8134:::-;;;;:::o;11704:1255::-;11753:14;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;;;8402:1;11822:13:::1;:11;:13::i;:::-;-1:-1:-1::0;11892:6:0::1;::::0;11877:47:::1;::::0;;-1:-1:-1;;;11877:47:0;;11918:4:::1;11877:47;::::0;::::1;::::0;;;11780:55;;-1:-1:-1;11780:55:0;;-1:-1:-1;11861:13:0::1;::::0;-1:-1:-1;;;;;11892:6:0;;::::1;::::0;11877:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;11892:6;11877:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11877:47:0;11966:6:::1;::::0;11951:47:::1;::::0;;-1:-1:-1;;;11951:47:0;;11992:4:::1;11951:47;::::0;::::1;::::0;;;11877;;-1:-1:-1;11935:13:0::1;::::0;-1:-1:-1;;;;;11966:6:0;;::::1;::::0;11951:32:::1;::::0;:47;;;;;11877::::1;::::0;11951;;;;;;;;11966:6;11951:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11951:47:0;;-1:-1:-1;12009:12:0::1;12024:23;:8:::0;-1:-1:-1;;;;;12024:23:0;::::1;:12;:23::i;:::-;12009:38:::0;-1:-1:-1;12058:12:0::1;12073:23;:8:::0;-1:-1:-1;;;;;12073:23:0;::::1;:12;:23::i;:::-;12058:38;;12109:10;12122:30;12131:9;12142;12122:8;:30::i;:::-;12163:17;12183:11:::0;12109:43;;-1:-1:-1;12287:17:0;12283:352:::1;;12333:54;7606:5;12333:31;12343:20;:7:::0;12355;12343:11:::1;:20::i;:::-;12333:9;:31::i;:54::-;12321:66;;12401:36;12415:1;7606:5;12401;:36::i;:::-;12283:352;;;12537:86;-1:-1:-1::0;;;;;12546:37:0;::::1;:25;:7:::0;12558:12;12546:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;12585:37:0;::::1;:25;:7:::0;12597:12;12585:11:::1;:25::i;:::-;:37;;;;;;12537:8;:86::i;:::-;12525:98;;12283:352;12665:1;12653:9;:13;12645:65;;;;-1:-1:-1::0;;;12645:65:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12721:20;12727:2;12731:9;12721:5;:20::i;:::-;12754:49;12762:8;12772;12782:9;12793;12754:7;:49::i;:::-;12818:5;12814:47;;;12852:8;::::0;12833:28:::1;::::0;-1:-1:-1;;;;;12838:8:0;;::::1;::::0;-1:-1:-1;;;12852:8:0;::::1;;12833:18;:28::i;:::-;12825:5;:36:::0;12814:47:::1;12917:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;12922:10:::1;::::0;12917:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8437:1:0;8426:8;:12;-1:-1:-1;11704:1255:0;;;-1:-1:-1;;;;;;11704:1255:0:o;1007:41::-;;;;;;;;;;;;;:::o;8173:17::-;;;;:::o;1383:38::-;;;;;;;;;;;;;:::o;13071:1497::-;13120:12;13134;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;;;8402:1;13201:13:::1;:11;:13::i;:::-;-1:-1:-1::0;13258:6:0::1;::::0;13339::::1;::::0;13418:48:::1;::::0;;-1:-1:-1;;;13418:48:0;;13460:4:::1;13418:48;::::0;::::1;::::0;;;13159:55;;-1:-1:-1;13159:55:0;;-1:-1:-1;;;;;;13258:6:0;;::::1;::::0;13339;::::1;::::0;13240:15:::1;::::0;13258:6;;13418:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;13258:6;13418:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13418:48:0;13493::::1;::::0;;-1:-1:-1;;;13493:48:0;;13535:4:::1;13493:48;::::0;::::1;::::0;;;13418;;-1:-1:-1;13477:13:0::1;::::0;-1:-1:-1;;;;;13493:33:0;::::1;::::0;::::1;::::0;:48;;;;;13418::::1;::::0;13493;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13493:48:0;13587:4:::1;13552:14;13569:24:::0;;;:9:::1;13493:48;13569:24:::0;;;;;13493:48;;-1:-1:-1;13619:30:0::1;13628:9:::0;13639;13619:8:::1;:30::i;:::-;13660:17;13680:11:::0;13606:43;;-1:-1:-1;13680:11:0;13790:23:::1;:9:::0;13804:8;13790:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;13923:12:0;13897:23:::1;:9:::0;13911:8;13897:13:::1;:23::i;:::-;:38;;;;;;13887:48;;14012:1;14002:7;:11;:26;;;;;14027:1;14017:7;:11;14002:26;13994:78;;;;-1:-1:-1::0;;;13994:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14083:31;14097:4;14104:9;14083:5;:31::i;:::-;14125:35;14139:7;14148:2;14152:7;14125:13;:35::i;:::-;14171;14185:7;14194:2;14198:7;14171:13;:35::i;:::-;14228:48;::::0;;-1:-1:-1;;;14228:48:0;;14270:4:::1;14228:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;14228:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14228:48:0;14298::::1;::::0;;-1:-1:-1;;;14298:48:0;;14340:4:::1;14298:48;::::0;::::1;::::0;;;14228;;-1:-1:-1;;;;;;14298:33:0;::::1;::::0;::::1;::::0;:48;;;;;14228::::1;::::0;14298;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14298:48:0;;-1:-1:-1;14359:49:0::1;14367:8:::0;14298:48;14387:9;14398;14359:7:::1;:49::i;:::-;14423:5;14419:47;;;14457:8;::::0;14438:28:::1;::::0;-1:-1:-1;;;;;14443:8:0;;::::1;::::0;-1:-1:-1;;;14457:8:0;::::1;;14438:18;:28::i;:::-;14430:5;:36:::0;14419:47:::1;14522:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;14522:38:0;::::1;::::0;14527:10:::1;::::0;14522:38:::1;::::0;;;;;;;;;::::1;8414:1;;;;;;;;;8437::::0;8426:8;:12;;;;13071:1497;;;:::o;890:37::-;;;;;;;;;;;;;;-1:-1:-1;;;890:37:0;;;;:::o;3042:139::-;3102:4;3119:32;3129:10;3141:2;3145:5;3119:9;:32::i;7565:46::-;7606:5;7565:46;:::o;16627:350::-;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;16696:6:::1;::::0;16746::::1;::::0;16858:8:::1;::::0;16805:48:::1;::::0;;-1:-1:-1;;;16805:48:0;;16847:4:::1;16805:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;16696:6:0;;::::1;::::0;16746;;::::1;::::0;16778:90:::1;::::0;16696:6;;16801:2;;16805:62:::1;::::0;-1:-1:-1;;;;;16858:8:0::1;::::0;16696:6;;16805:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;;16696:6;16805:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16805:48:0;;:52:::1;:62::i;:::-;16778:13;:90::i;:::-;16879;16893:7;16902:2;16906:62;16959:8;;;;;;;;;-1:-1:-1::0;;;;;16959:8:0::1;-1:-1:-1::0;;;;;16906:62:0::1;16921:7;-1:-1:-1::0;;;;;16906:33:0::1;;16948:4;16906:48;;;;;;;;;;;;;-1:-1:-1::0;;;;;16906:48:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;16879:90;-1:-1:-1::0;;8437:1:0;8426:8;:12;-1:-1:-1;16627:350:0:o;7715:22::-;;;-1:-1:-1;;;;;7715:22:0;;:::o;7772:21::-;;;-1:-1:-1;;;;;7772:21:0;;:::o;3498:672::-;3644:15;3632:8;:27;;3624:57;;;;;-1:-1:-1;;;3624:57:0;;;;;;;;;;;;-1:-1:-1;;;3624:57:0;;;;;;;;;;;;;;;3797:16;;-1:-1:-1;;;;;3893:13:0;;;3692:14;3893:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3842:77;;1310:66;3842:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3832:88;;;;;;-1:-1:-1;;;3733:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3709:237;;;;;;;;;3984:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3692:14;;3893:15;3984:26;;;;;-1:-1:-1;;3984:26:0;;;;;;;;;;3893:15;3984:26;;;;;;;;;;;;;;;-1:-1:-1;;3984:26:0;;-1:-1:-1;;3984:26:0;;;-1:-1:-1;;;;;;;4029:30:0;;;;;;:59;;;4083:5;-1:-1:-1;;;;;4063:25:0;:16;-1:-1:-1;;;;;4063:25:0;;4029:59;4021:99;;;;;-1:-1:-1;;;4021:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4131:31;4140:5;4147:7;4156:5;4131:8;:31::i;:::-;3498:672;;;;;;;;;:::o;1055:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17026:174::-;8346:8;;8358:1;8346:13;8338:42;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;-1:-1:-1;;;8338:42:0;;;;;;;;;;;;;;;8402:1;8391:8;:12;17090:6:::1;::::0;17075:47:::1;::::0;;-1:-1:-1;;;17075:47:0;;17116:4:::1;17075:47;::::0;::::1;::::0;;;17067:125:::1;::::0;-1:-1:-1;;;;;17090:6:0::1;::::0;17075:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;17090:6;17075:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17075:47:0;17139:6:::1;::::0;17124:47:::1;::::0;;-1:-1:-1;;;17124:47:0;;17165:4:::1;17124:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17139:6:0;;::::1;::::0;17124:32:::1;::::0;:47;;;;;17075::::1;::::0;17124;;;;;;;;17139:6;17124:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17124:47:0;17173:8:::1;::::0;-1:-1:-1;;;;;17173:8:0;;::::1;::::0;-1:-1:-1;;;17183:8:0;::::1;;17067:7;:125::i;:::-;8437:1:::0;8426:8;:12;17026:174::o;8693:286::-;7670:34;;;;;;;;;;;;;;;;;8821:43;;-1:-1:-1;;;;;8821:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8821:43:0;-1:-1:-1;;;8821:43:0;;;8810:55;;;;8775:12;;8789:17;;8810:10;;;8821:43;8810:55;;;8821:43;8810:55;;8821:43;8810:55;;;;;;;;;;-1:-1:-1;;8810:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8774:91;;;;8884:7;:57;;;;-1:-1:-1;8896:11:0;;:16;;:44;;;8927:4;8916:24;;;;;;;;;;;;;;;-1:-1:-1;8916:24:0;8896:44;8876:95;;;;;-1:-1:-1;;;8876:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8693:286;;;;;:::o;539:142::-;591:6;618;;;:30;;-1:-1:-1;;633:5:0;;;647:1;642;633:5;642:1;628:15;;;;;:20;618:30;610:63;;;;;-1:-1:-1;;;610:63:0;;;;;;;;;;;;-1:-1:-1;;;610:63:0;;;;;;;;;;;;;;402:129;486:5;;;481:16;;;;473:50;;;;;-1:-1:-1;;;473:50:0;;;;;;;;;;;;-1:-1:-1;;;473:50:0;;;;;;;;;;;;;;9807:859;-1:-1:-1;;;;;9919:23:0;;;;;:50;;-1:-1:-1;;;;;;9946:23:0;;;9919:50;9911:81;;;;;-1:-1:-1;;;9911:81:0;;;;;;;;;;;;-1:-1:-1;;;9911:81:0;;;;;;;;;;;;;;;10107:18;;10034:23;:15;:23;;;-1:-1:-1;;;10107:18:0;;;;10090:35;;;10163:15;;;;;;:33;;-1:-1:-1;;;;;;10182:14:0;;;;10163:33;:51;;;;-1:-1:-1;;;;;;10200:14:0;;;;10163:51;10159:336;;;10369:11;10316:64;;10321:44;10355:9;10321:27;10338:9;10321:16;:27::i;:::-;-1:-1:-1;;;;;10321:33:0;;;:44::i;:::-;10292:20;:88;;-1:-1:-1;;;;;10316:50:0;;;;:64;;;;10292:88;;;10419:64;;;10424:44;10458:9;10424:27;10441:9;10424:16;:27::i;:44::-;10395:20;:88;;-1:-1:-1;;;;;10419:50:0;;;;:64;;;;10395:88;;;10159:336;10505:8;:28;;-1:-1:-1;;10505:28:0;-1:-1:-1;;;;;10505:28:0;;;;;;;-1:-1:-1;;;;10544:28:0;-1:-1:-1;;;10544:28:0;;;;;;;;;-1:-1:-1;;;;;10583:35:0;-1:-1:-1;;;10583:35:0;;;;;;;;;10634:24;;;10639:8;;;10634:24;;10649:8;;;;;;;10634:24;;;;;;;;;;;;;;;;;9807:859;;;;;;:::o;2482:169::-;-1:-1:-1;;;;;2563:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2612:31;;;;;;;;;;;;;;;;;2482:169;;;:::o;2659:220::-;-1:-1:-1;;;;;2753:15:0;;;;;;:9;:15;;;;;;:26;;2773:5;2753:19;:26::i;:::-;-1:-1:-1;;;;;2735:15:0;;;;;;;:9;:15;;;;;;:44;;;;2806:13;;;;;;;:24;;2824:5;2806:17;:24::i;:::-;-1:-1:-1;;;;;2790:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2846:25;;;;;;;2790:13;;2846:25;;;;;;;;;;;;;2659:220;;;:::o;10756:836::-;10829:10;10852:13;10885:7;;;;;;;;;-1:-1:-1;;;;;10885:7:0;-1:-1:-1;;;;;10868:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10868:33:0;10964:5;;-1:-1:-1;;;;;10920:19:0;;;;;;-1:-1:-1;10868:33:0;;-1:-1:-1;10964:5:0;10995:590;;11025:11;;11021:494;;11057:10;11070:41;11080:30;-1:-1:-1;;;;;11080:15:0;;;;:30;;:19;:30::i;11070:41::-;11057:54;;11130:14;11147:17;11157:6;11147:9;:17::i;:::-;11130:34;;11195:9;11187:5;:17;11183:317;;;11229:14;11246:37;11262:20;:5;11272:9;11262;:20::i;:::-;11246:11;;;:15;:37::i;:::-;11229:54;-1:-1:-1;11306:16:0;11325:27;11342:9;11325:12;:5;11335:1;11325:9;:12::i;:::-;:16;;:27::i;:::-;11306:46;;11375:14;11404:11;11392:9;:23;;;;;;;-1:-1:-1;11442:13:0;;11438:42;;11457:23;11463:5;11470:9;11457:5;:23::i;:::-;11183:317;;;;11021:494;;;10995:590;;;11536:11;;11532:53;;11572:1;11564:5;:9;11532:53;10756:836;;;;;;:::o;4540:303::-;4585:6;4612:1;4608;:5;4604:232;;;-1:-1:-1;4634:1:0;4667;4663;4659:5;;:9;4683:92;4694:1;4690;:5;4683:92;;;4720:1;4716:5;;4758:1;4753;4749;4745;:5;;;;;;:9;4744:15;;;;;;4740:19;;4683:92;;;4604:232;;;;4796:6;;4792:44;;-1:-1:-1;4823:1:0;4792:44;4540:303;;;:::o;2056:201::-;2129:11;;:22;;2145:5;2129:15;:22::i;:::-;2115:11;:36;;;-1:-1:-1;;;;;2178:13:0;;;;:9;:13;;;;;;:24;;2196:5;2178:17;:24::i;:::-;-1:-1:-1;;;;;2162:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2218:31;;;;;;;2162:13;;;;2218:31;;;;;;;;;;2056:201;;:::o;4326:96::-;4378:6;4405:1;4401;:5;:13;;4413:1;4401:13;;;4409:1;4401:13;4397:17;4326:96;-1:-1:-1;;;4326:96:0:o;2265:209::-;-1:-1:-1;;;;;2344:15:0;;;;;;:9;:15;;;;;;:26;;2364:5;2344:19;:26::i;:::-;-1:-1:-1;;;;;2326:15:0;;;;;;:9;:15;;;;;:44;;;;2395:11;:22;;2411:5;2395:15;:22::i;:::-;2381:11;:36;;;2433:33;;;;;;;;-1:-1:-1;;;;;2433:33:0;;;;;;;;;;;;;2265:209;;:::o;5195:120::-;-1:-1:-1;;;;;5271:10:0;-1:-1:-1;;;5271:17:0;;5195:120::o;5386:108::-;5446:9;-1:-1:-1;;;;;5476:10:0;;-1:-1:-1;;;;;5472:14:0;;5476:10;5472:14;;;;;;5386:108;-1:-1:-1;;;5386:108:0:o;266:128::-;350:5;;;345:16;;;;337:49;;;;;-1:-1:-1;;;337:49:0;;;;;;;;;;;;-1:-1:-1;;;337:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://957517fdaeb94c5dd2a5d1f649c9ad22f73d96868bb4c198004c1923e14d545f
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.