Contract 0x6175030ca189bad158228d0b36d4c9209ae06567

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x1e3b173af457661cee5757d6126b081c7f4cf4ff4a2ab98b30abf2b54ce1ea2181820812021-06-10 18:01:419 days 12 hrs ago0xceca20003e4aa5eb919983bca8ebe8ecc40fedaa IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0xc7c5e298f534209f44d7fcf8705ed156d56f0cb2df1eb0ec233f7bf6c3ed1a4377940032021-05-28 5:39:1623 days 1 hr ago0x41db5400de1f16276eac64f1136f0e9fe676445f IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0xf57a72b77cee227050dc54b2994f2cc3cb18158a8074da733ddc3b66472dabba77858102021-05-27 22:48:0023 days 7 hrs ago0xaa7c5dc3f6daca5c244c61d0ac3a16cd1e6ca45b IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00012351
0xd176ad887b80124aee845ae52c661dca7344f76cf96525c8bf0fca2187b6def377857752021-05-27 22:46:1523 days 7 hrs ago0xaa7c5dc3f6daca5c244c61d0ac3a16cd1e6ca45b IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0x3f774b590e2ed3aee0ef6fb60d06e2ed17317ab408b19168fe48945c8eb2933776226432021-05-22 6:06:5529 days 37 mins ago0xff8cf29377d28c1ea9ea4f3d119abe9e1035de74 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0x2d11b15ea0fd4f32a3e16d2b1c926a5575655b0f175889012ce9b410292bbf7e75588052021-05-20 0:35:1731 days 6 hrs ago0xc5c354ea80dbfe0003450de6b01a0db4f505e64c IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0xff4a033d51f6fd94e8164855e8cc456711159e3cc283fa8d6f19f443e2d3939e72299182021-05-08 2:05:4343 days 4 hrs ago0x2459f5c0dddd43564238291786b297d63e99f4ba IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00012351
0x24760e178a9dbc420f3c1d58bc27e95dfe93cd8aef78575da7b9ba13105d8f4972299162021-05-08 2:05:3743 days 4 hrs ago0x2459f5c0dddd43564238291786b297d63e99f4ba IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00012351
0x55f1e2d5a82ce09a3f5c25234431c607c604d534387a0828bd9f919773cfcd4972298872021-05-08 2:04:1043 days 4 hrs ago0x2459f5c0dddd43564238291786b297d63e99f4ba IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00012351
0x695a7cb9d87ad66826c2dca2887ebdbe3576c0b3b35ea777c706251da1c7942172298372021-05-08 2:01:4043 days 4 hrs ago0x2459f5c0dddd43564238291786b297d63e99f4ba IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0xda86faeb9ac8d86b6e74e933f2dbd1702e4b8833229f5af16805a4316241c5c871775082021-05-06 5:16:2945 days 1 hr ago0x7b76b4d3b1b1dd62d3711b1856ba388a84c23d34 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0x5af411b6e5f636d31d0575d6129dbc78529dc0480f2c2c1cb22e63dc453a954771752732021-05-06 3:24:3945 days 3 hrs ago0x843b9fecbd1be8ace3f17cc94730ed832e2be928 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0x9a56b15cfe43c58749e15b628ad7ab03b09b308d5956f0f479533b71cbe0c9e865457092021-04-14 1:53:2867 days 4 hrs ago0xa4f854be31303a35d6a6a745850ca345a9dda465 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000072255
0x0d4a234c78bd789dbdf3047b73848ca0126f1e30a5e24665185c40c164772be262766232021-04-04 14:29:1276 days 16 hrs ago0xadb9a7cc511ab7a81a24c8d85fc6165a93567b87 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00014451
0x5bbd2d4152d95c0f18da2989398cc63f7a408d9ffbb595165f3a1433088d8df360774122021-03-28 15:15:3783 days 15 hrs ago0x99bf0326e1e27107c4f4e8a29cad62311b4b186c IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00024702
0x4927bee98eb983ad7d0ed555bb178ea62206532d2335b7bf08b38cd89562c52e60773372021-03-28 15:11:5283 days 15 hrs ago0x99bf0326e1e27107c4f4e8a29cad62311b4b186c IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00014451
0x572b5540fe16be371301b31b4fb2dadb722041c96f855a9df9e4cc3d722a20ce58800362021-03-21 17:03:1790 days 13 hrs ago0xfea3325e9a935ae6dcc184af68703fc6d8617cec IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.0001546257
0x9e8969e906cf5ae011d9e8fb2533091563ecf5e0a00258a4dfcf47fe2890808e58425892021-03-20 9:48:2291 days 20 hrs ago0xc583be6b053660346d89e4af8296afe2b826e60e IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00044286
0x2d21efd8a606719de266a6ff8ab0b8cf759f331d0e795ee4a523a74f3c4f2b5f57327062021-03-16 14:09:0295 days 16 hrs ago0x696b528a13185af83e05fb512ee9687f49368409 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00014451
0x71b1f0181c77a899de61d7ea576908d5b9c01b1bd42bcb8f3bbd8e4e195b057a57326752021-03-16 14:07:2995 days 16 hrs ago0x696b528a13185af83e05fb512ee9687f49368409 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00029286
0x6e9a6edf0c65ffea5544414971a5b7fd9cbfcf33b95dff9773c5980fd4517a3e57326642021-03-16 14:06:5695 days 16 hrs ago0x696b528a13185af83e05fb512ee9687f49368409 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00043974
0x50042aa9164fb0298121ae2e3d55f24deb9da72bdae81fe0db33c7c4dc047d2a57055302021-03-15 15:28:3596 days 15 hrs ago0x6ca6b179f182984e61253bbd38b948c2d8961a8b IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.000187863
0xc0a475241ee03470584ce9a348072df829026a55a62164b7e95a004499a0ee8b56449612021-03-13 12:56:3198 days 17 hrs ago0x7aa3ef29fbdb3812de895d91f7eec980ff58e380 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00014451
0x5e01db52d2387342a79f55d5c4afa521f007edefdad0e4013110e69b389c67c756449572021-03-13 12:56:1998 days 17 hrs ago0x7aa3ef29fbdb3812de895d91f7eec980ff58e380 IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00014451
0xede78d9b138d3eb8f062a7624268f5da9c27baea82036207b42e485fa51d69f455205882021-03-09 5:03:37103 days 1 hr ago0x35b28b923ee10ce0605e180c227ebecc6608cd3d IN  0x6175030ca189bad158228d0b36d4c9209ae065670 BNB0.00044286
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x679d076a6afcd7cf3f7d27d2feeb204dc4b8275e18e8155b7c87008993d6258254694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xef90389d37a3a07d888fedcdf9b282968b650086132c9f3a72da12622135ee4d54694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x82db24f3265f68d6a1346fbc78b94491949beede634c39b367658cd660ede36054694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x04ee3b4659486a5096cbda70f78494ef5da41a52b8f41697de01edabd67c8c1a54694022021-03-07 10:23:03104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xc885bf5ee7e857d5082fcba23237c5a23db0c79a03f6891afa6636e707bec8e154694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xddd6b47c5ba8398899baaab88c34084110211b0a3714f508ba69c6034a2db15f54694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x79711d2c77e52e0ed4de53c38a497b58da5e7d2eec40f6a90b152f2a43b31b8454694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x1c83472398b86f606f6bba33257fe282ffd39c2bbb502e5fb2cf68a3e5f40e3754694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x6bb0c8800e1fcaa4e9791a85e162ac26c4af7cfd91598bf0ed2c43b15333ebb354694022021-03-07 10:23:03104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xb09a14ff5e7dabca99dcfac270ed80e37fa6d29751960c6b3fe1c1129d4d17df54694012021-03-07 10:23:00104 days 20 hrs ago 0x64902f799c512b3d38902a19e670096bd130c195 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x0d096deb382efe2e3f82767bf2ee7ee419e070f64a74f66b7685cf42d8c9c0ff54694012021-03-07 10:23:00104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x686de40d746b8dfd74071548151e1846f46340d42d5dd5811c3fa5c26d77f55b54694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x5ff8fab4e0568cc25b0d068d94938672e65de9289159d7b04d9c80f489e7161154694012021-03-07 10:23:00104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xf15b3a5b2587cfb4f23f25a901238dc37ad6a4b2dddb694695671aabb84c33d554694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xc7b5ad3387c4a512ae5f897627f89094b929dbcae8bf14da66f9a3661232af5b54694012021-03-07 10:23:00104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x44d3bd10a8468ea5d2e729b6b7c51a9c6b22debdb7d7b7a3ffe6d628fb487bb054694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x10b68e03389cb0a76a471d79fecb11c9d2867df0a98e4efc1edabfed2c05beca54694012021-03-07 10:23:00104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x6581e84372a67b592ca6ec85f66ad7cebdd33bcea76d4be3546e300d1c2121eb54694012021-03-07 10:23:00104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x8b1c43159641876e9100ee67952e92ef7454762b999e75e60200d8da9e711f3054694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xa647a61ac909377ec04a046a4e2549442d7fa9c435b96b84e943d7cab0211ed554694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x605493ee283be24b4358e4bf84a824282fa37b9ea6c4a5b26bb361eb43224dae54694012021-03-07 10:23:00104 days 20 hrs ago 0xebfc329f30d9f9838b4ed149a1ff593f8308f688 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x7289ae38abab48ba8f5b4b514cfa70dee23f163db369b88bc4ba35d6103ec4b754694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xdcc8cf4a77cc65eb6f5e5a46aad6ccf2b15cac49394a894900a539eb52399e3354694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0x0a6e22d86daab95f6d7197376cc3a854ed0fa3284fc2774401dc1a864594e3d054694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
0xecdeea095c1d92b343f4e248909db14bfd99482471469ddc09c18a515a37639954694012021-03-07 10:23:00104 days 20 hrs ago 0x6251b90679fe18be6b8996bc2a803f6b2ef8f2d5 0x6175030ca189bad158228d0b36d4c9209ae065670 BNB
[ Download CSV Export 
Loading

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

Contract Name:
BnEXPair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 50000 runs

Other Settings:
istanbul EvmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-10-02
*/

pragma solidity =0.6.12;


// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMathBnEX {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }

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

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

contract BnEXERC20 {
    using SafeMathBnEX for uint256;

    string public constant name = "BnEX LP Token";
    string public constant symbol = "BLP";
    uint8 public constant decimals = 18;
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) 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 => uint256) public nonces;

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    constructor() public {
        uint256 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, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint256 value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool) {
        if (allowance[from][msg.sender] != uint256(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(
                value
            );
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        require(deadline >= block.timestamp, "BnEX::ERC20::permit::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,
            "BnEX::ERC20::permit::INVALID_SIGNATURE"
        );
        _approve(owner, spender, value);
    }
}

// a library for performing various math operations
library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

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

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))
// range: [0, 2**112 - 1]
// resolution: 1 / 2**112
library UQ112x112 {
    uint224 constant Q112 = 2**112;

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

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

interface IERC20 {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

interface IBnEXFactory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function migrator() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;

    function setMigrator(address) external;
}

interface IBnEXCallee {
    function bnEXCall(
        address sender,
        uint256 amount0,
        uint256 amount1,
        bytes calldata data
    ) external;
}

interface IMigrator {
    // Return the desired amount of liquidity token that the migrator wants.
    function desiredLiquidity() external view returns (uint256);
}

contract BnEXPair is BnEXERC20 {
    using SafeMathBnEX for uint256;
    using UQ112x112 for uint224;

    uint256 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

    uint256 public price0CumulativeLast;
    uint256 public price1CumulativeLast;
    uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint256 private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, "BnEX::Pair::lock::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,
        uint256 value
    ) private {
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(SELECTOR, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "BnEX::Pair::_safeTransfer::TRANSFER_FAILED"
        );
    }

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 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, "BnEX::Pair::initialize::FORBIDDEN"); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(
        uint256 balance0,
        uint256 balance1,
        uint112 _reserve0,
        uint112 _reserve1
    ) private {
        require(
            balance0 <= uint112(-1) && balance1 <= uint112(-1),
            "BnEX::Pair::_update::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 +=
                uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) *
                timeElapsed;
            price1CumulativeLast +=
                uint256(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 = IBnEXFactory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint256 _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = Math.sqrt(uint256(_reserve0).mul(_reserve1));
                uint256 rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint256 denominator = rootK.mul(5).add(rootKLast);
                    uint256 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 (uint256 liquidity) {
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        uint256 balance0 = IERC20(token0).balanceOf(address(this));
        uint256 balance1 = IERC20(token1).balanceOf(address(this));
        uint256 amount0 = balance0.sub(_reserve0);
        uint256 amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            address migrator = IBnEXFactory(factory).migrator();
            if (msg.sender == migrator) {
                liquidity = IMigrator(migrator).desiredLiquidity();
                require(
                    liquidity > 0 && liquidity != uint256(-1),
                    "BnEX::Pair::mint::BAD_LIQUIDITY"
                );
            } else {
                require(
                    migrator == address(0),
                    "BnEX::Pair::mint::MIGRATOR_NOT_EXIST"
                );
                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,
            "BnEX::Pair::mint::INSUFFICIENT_LIQUIDITY_MINTED"
        );
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint256(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 (uint256 amount0, uint256 amount1)
    {
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        uint256 balance0 = IERC20(_token0).balanceOf(address(this));
        uint256 balance1 = IERC20(_token1).balanceOf(address(this));
        uint256 liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint256 _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,
            "BnEX::Pair::burn::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 = uint256(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(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external lock {
        require(
            amount0Out > 0 || amount1Out > 0,
            "BnEX::Pair::swap::INSUFFICIENT_OUTPUT_AMOUNT"
        );
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        require(
            amount0Out < _reserve0 && amount1Out < _reserve1,
            "BnEX::Pair::swap::INSUFFICIENT_LIQUIDITY"
        );

        uint256 balance0;
        uint256 balance1;
        {
            // scope for _token{0,1}, avoids stack too deep errors
            address _token0 = token0;
            address _token1 = token1;
            require(
                to != _token0 && to != _token1,
                "BnEX::Pair::swap::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)
                IBnEXCallee(to).bnEXCall(
                    msg.sender,
                    amount0Out,
                    amount1Out,
                    data
                );
            balance0 = IERC20(_token0).balanceOf(address(this));
            balance1 = IERC20(_token1).balanceOf(address(this));
        }
        uint256 amount0In = balance0 > _reserve0 - amount0Out
            ? balance0 - (_reserve0 - amount0Out)
            : 0;
        uint256 amount1In = balance1 > _reserve1 - amount1Out
            ? balance1 - (_reserve1 - amount1Out)
            : 0;
        require(
            amount0In > 0 || amount1In > 0,
            "BnEX::Pair::swap::INSUFFICIENT_INPUT_AMOUNT"
        );
        {
            // scope for reserve{0,1}Adjusted, avoids stack too deep errors
            uint256 balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
            uint256 balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
            require(
                balance0Adjusted.mul(balance1Adjusted) >=
                    uint256(_reserve0).mul(_reserve1).mul(1000**2),
                "BnEX::Pair::swap::INVALID_K"
            );
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(
            _token0,
            to,
            IERC20(_token0).balanceOf(address(this)).sub(reserve0)
        );
        _safeTransfer(
            _token1,
            to,
            IERC20(_token1).balanceOf(address(this)).sub(reserve1)
        );
    }

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

Contract ABI

[{"inputs":[],"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"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252600d81526c213722ac102628102a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fb40075d8e99ad2d4cbfab4acfe856450f016e7db035c777ad08dc51177328db9818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612dff8061010b6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fa9565b61039b610faf565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fb5565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611583565b61039b611595565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661159b565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166115ad565b6040805192835260208301919091528051918290030190f35b610261611a38565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a71565b61039b611a7e565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a84565b61036a611c71565b61036a611c8d565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ca9565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611f5f565b610257611f7c565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426e45583a3a506169723a3a6c6f636b3a3a4c4f434b45440000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612cd5602c913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612c586028913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f426e45583a3a506169723a3a737761703a3a494e56414c49445f544f00000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d612162565b89156108e1576108e1818a8c612162565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff1663cf2b74bd338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612d01602b913960400191505060405180910390fd5b6000610be1610bcf846003612359565b610bdb876103e8612359565b906123df565b90506000610bf3610bcf846003612359565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612359565b90612359565b610c298383612359565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f426e45583a3a506169723a3a737761703a3a494e56414c49445f4b0000000000604482015290519081900360640190fd5b5050610ca484848888612451565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600d81526020017f426e4558204c5020546f6b656e0000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612707565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836123df565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612776565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612da96021913960400191505060405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461102857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426e45583a3a506169723a3a6c6f636b3a3a4c4f434b45440000000000000000604482015290519081900360640190fd5b6000600c81905580611038610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110b257600080fd5b505afa1580156110c6573d6000803e3d6000fd5b505050506040513d60208110156110dc57600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d602081101561117f57600080fd5b50519050600061119f836dffffffffffffffffffffffffffff87166123df565b905060006111bd836dffffffffffffffffffffffffffff87166123df565b905060006111cb878761284b565b6000549091508061143a57600554604080517f7cd07e47000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691637cd07e47916004808301926020929190829003018186803b15801561124157600080fd5b505afa158015611255573d6000803e3d6000fd5b505050506040513d602081101561126b57600080fd5b505190503373ffffffffffffffffffffffffffffffffffffffff821614156113a0578073ffffffffffffffffffffffffffffffffffffffff166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d357600080fd5b505afa1580156112e7573d6000803e3d6000fd5b505050506040513d60208110156112fd57600080fd5b50519950891580159061133057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a14155b61139b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f426e45583a3a506169723a3a6d696e743a3a4241445f4c495155494449545900604482015290519081900360640190fd5b611434565b73ffffffffffffffffffffffffffffffffffffffff81161561140d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612d2c6024913960400191505060405180910390fd5b6114256103e8610bdb6114208888612359565b6129b9565b995061143460006103e8612a0b565b5061148b565b6114886dffffffffffffffffffffffffffff89166114588684612359565b8161145f57fe5b046dffffffffffffffffffffffffffff891661147b8685612359565b8161148257fe5b04612aaf565b98505b600089116114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612c80602f913960400191505060405180910390fd5b6114ee8a8a612a0b565b6114fa86868a8a612451565b811561153657600854611532906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612359565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461162157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426e45583a3a506169723a3a6c6f636b3a3a4c4f434b45440000000000000000604482015290519081900360640190fd5b6000600c81905580611631610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156116b357600080fd5b505afa1580156116c7573d6000803e3d6000fd5b505050506040513d60208110156116dd57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561175157600080fd5b505afa158015611765573d6000803e3d6000fd5b505050506040513d602081101561177b57600080fd5b50513060009081526001602052604081205491925061179a888861284b565b600054909150806117ab8487612359565b816117b257fe5b049a50806117c08486612359565b816117c757fe5b04995060008b1180156117da575060008a115b61182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612d7a602f913960400191505060405180910390fd5b6118393084612ac7565b611844878d8d612162565b61184f868d8c612162565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d60208110156118e557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d602081101561198157600080fd5b5051935061199185858b8b612451565b81156119cd576008546119c9906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612359565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600381526020017f424c50000000000000000000000000000000000000000000000000000000000081525081565b6000610db2338484612776565b6103e881565b600c54600114611af557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426e45583a3a506169723a3a6c6f636b3a3a4c4f434b45440000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611bcb9285928792611bc6926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611b9457600080fd5b505afa158015611ba8573d6000803e3d6000fd5b505050506040513d6020811015611bbe57600080fd5b5051906123df565b612162565b611c678184611bc66008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b9457600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611d1857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f426e45583a3a45524332303a3a7065726d69743a3a4558504952454400000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611e79573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611ef457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612caf6026913960400191505060405180910390fd5b611f54898989612707565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611fed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426e45583a3a506169723a3a6c6f636b3a3a4c4f434b45440000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161215b9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561206457600080fd5b505afa158015612078573d6000803e3d6000fd5b505050506040513d602081101561208e57600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561210157600080fd5b505afa158015612115573d6000803e3d6000fd5b505050506040513d602081101561212b57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612451565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061226857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161222b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b50915091508180156122fd5750805115806122fd57508080602001905160208110156122fa57600080fd5b50515b612352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612d50602a913960400191505060405180910390fd5b5050505050565b60008115806123745750508082028282828161237157fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061247d57506dffffffffffffffffffffffffffff8311155b6124e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f426e45583a3a506169723a3a5f7570646174653a3a4f564552464c4f57000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061253857506dffffffffffffffffffffffffffff841615155b801561255357506dffffffffffffffffffffffffffff831615155b156125fd578063ffffffff166125908561256c86612b80565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612ba4565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166125d08461256c87612b80565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546127a690826123df565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546127e29082612be5565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156128b657600080fd5b505afa1580156128ca573d6000803e3d6000fd5b505050506040513d60208110156128e057600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906129a55780156129a05760006129316114206dffffffffffffffffffffffffffff888116908816612359565b9050600061293e836129b9565b90508082111561299d57600061296061295784846123df565b60005490612359565b9050600061297983612973866005612359565b90612be5565b9050600081838161298657fe5b0490508015612999576129998782612a0b565b5050505b50505b6129b1565b80156129b1576000600b555b505092915050565b600060038211156129fc575080600160028204015b818110156129f6578091506002818285816129e557fe5b0401816129ee57fe5b0490506129ce565b50612a06565b8115612a06575060015b919050565b600054612a189082612be5565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612a4a9082612be5565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612abe5781612ac0565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612af790826123df565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612b2b90826123df565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612bdd57fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe426e45583a3a506169723a3a737761703a3a494e53554646494349454e545f4c4951554944495459426e45583a3a506169723a3a6d696e743a3a494e53554646494349454e545f4c49515549444954595f4d494e544544426e45583a3a45524332303a3a7065726d69743a3a494e56414c49445f5349474e4154555245426e45583a3a506169723a3a737761703a3a494e53554646494349454e545f4f55545055545f414d4f554e54426e45583a3a506169723a3a737761703a3a494e53554646494349454e545f494e5055545f414d4f554e54426e45583a3a506169723a3a6d696e743a3a4d49475241544f525f4e4f545f4558495354426e45583a3a506169723a3a5f736166655472616e736665723a3a5452414e534645525f4641494c4544426e45583a3a506169723a3a6275726e3a3a494e53554646494349454e545f4c49515549444954595f4255524e4544426e45583a3a506169723a3a696e697469616c697a653a3a464f5242494444454ea26469706673582212207fd53a36e5660dc9d71ec6a577535360364e4c7f3874922b2e263500dd19e20064736f6c634300060c0033

Deployed ByteCode Sourcemap

7946:11639:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16364:2465;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16364:2465:0;;-1:-1:-1;16364:2465:0;-1:-1:-1;16364:2465:0;:::i;:::-;;678:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8964:313;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2910:150;;;;;;;;;;;;;;;;-1:-1:-1;2910:150:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8255:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;816:26;;;:::i;:::-;;;;;;;;;;;;;;;;3218:373;;;;;;;;;;;;;;;;-1:-1:-1;3218:373:0;;;;;;;;;;;;;;;;;;:::i;1116:117::-;;;:::i;774:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;973:31;;;:::i;10287:223::-;;;;;;;;;;;;;;;;-1:-1:-1;10287:223:0;;;;;;;;;;;:::i;8585:35::-;;;:::i;8627:::-;;;:::i;12703:1935::-;;;;;;;;;;;;;;;;-1:-1:-1;12703:1935:0;;;;:::i;849:44::-;;;;;;;;;;;;;;;;-1:-1:-1;849:44:0;;;;:::i;8669:20::-;;;:::i;1240:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1240:41:0;;;;:::i;14750:1502::-;;;;;;;;;;;;;;;;-1:-1:-1;14750:1502:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;730:37;;;:::i;3068:142::-;;;;;;;;;;;;;;;;-1:-1:-1;3068:142:0;;;;;;;;;:::i;8057:49::-;;;:::i;18878:434::-;;;;;;;;;;;;;;;;-1:-1:-1;18878:434:0;;;;:::i;8226:22::-;;;:::i;8283:21::-;;;:::i;3599:1020::-;;;;;;;;;;;;;;;;-1:-1:-1;3599:1020:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;900:64::-;;;;;;;;;;;;;;;;-1:-1:-1;900:64:0;;;;;;;;;;;:::i;19361:221::-;;;:::i;16364:2465::-;8848:8;;8860:1;8848:13;8840:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8912:1;8901:8;:12;16541:14;;;;:32:::1;;;16572:1;16559:10;:14;16541:32;16519:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16657:17;16676::::0;16699:13:::1;:11;:13::i;:::-;16656:56;;;;;16773:9;16760:22;;:10;:22;:48;;;;;16799:9;16786:22;;:10;:22;16760:48;16738:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17044:6;::::0;17083::::1;::::0;16889:16:::1;::::0;;;17044:6:::1;::::0;;::::1;::::0;17083;;::::1;::::0;17130:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;17153:7;17147:13;;:2;:13;;;;17130:30;17104:120;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17243:14:::0;;17239:58:::1;;17259:38;17273:7;17282:2;17286:10;17259:13;:38::i;:::-;17350:14:::0;;17346:58:::1;;17366:38;17380:7;17389:2;17393:10;17366:13;:38::i;:::-;17457:15:::0;;17453:207:::1;;17503:2;17491:24;;;17538:10;17571;17604;17637:4;;17491:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17453:207;17686:40;::::0;;;;;17720:4:::1;17686:40;::::0;::::1;::::0;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;::::1;::::0;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17686:40:0;17752::::1;::::0;;;;;17786:4:::1;17752:40;::::0;::::1;::::0;;;17686;;-1:-1:-1;17752:25:0::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;17686::::1;::::0;17752;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17752:40:0;;-1:-1:-1;17814:17:0::1;::::0;-1:-1:-1;;17845:22:0::1;::::0;::::1;::::0;;::::1;17834:33:::0;::::1;:101;;17934:1;17834:101;;;17907:10;17895:9;:22;;;17883:8;:35;17834:101;17814:121;;17946:17;17989:10;17977:9;:22;;;17966:8;:33;:101;;18066:1;17966:101;;;18039:10;18027:9;:22;;;18015:8;:35;17966:101;17946:121;;18112:1;18100:9;:13;:30;;;;18129:1;18117:9;:13;18100:30;18078:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18304:24;18331:40;18354:16;:9:::0;18368:1:::1;18354:13;:16::i;:::-;18331:18;:8:::0;18344:4:::1;18331:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;18304:67:::0;-1:-1:-1;18386:24:0::1;18413:40;18436:16;:9:::0;18450:1:::1;18436:13;:16::i;18413:40::-;18386:67:::0;-1:-1:-1;18557:46:0::1;18595:7;18557:33;;:18:::0;;::::1;::::0;:33;::::1;:22;:33::i;:::-;:37:::0;::::1;:46::i;:::-;18494:38;:16:::0;18515;18494:20:::1;:38::i;:::-;:109;;18468:198;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8924:1;;18690:49;18698:8;18708;18718:9;18729;18690:7;:49::i;:::-;18755:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;18760:10:::1;::::0;18755:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8947:1:0;8936:8;:12;-1:-1:-1;;;;;;;;;16364:2465:0:o;678:45::-;;;;;;;;;;;;;;;;;;;:::o;8964:313::-;9179:8;;;;;;;9210;;;;;;;9251:18;;;;;;8964:313::o;2910:150::-;2977:4;2994:36;3003:10;3015:7;3024:5;2994:8;:36::i;:::-;-1:-1:-1;3048:4:0;2910:150;;;;;:::o;8255:21::-;;;;;;:::o;816:26::-;;;;:::o;3218:373::-;3354:15;;;3333:4;3354:15;;;:9;:15;;;;;;;;3370:10;3354:27;;;;;;;;3393:2;3354:42;3350:175;;3443:15;;;;;;;:9;:15;;;;;;;;3459:10;3443:27;;;;;;;;:70;;3493:5;3443:31;:70::i;:::-;3413:15;;;;;;;:9;:15;;;;;;;;3429:10;3413:27;;;;;;;:100;3350:175;3535:26;3545:4;3551:2;3555:5;3535:9;:26::i;:::-;-1:-1:-1;3579:4:0;3218:373;;;;;:::o;1116:117::-;1167:66;1116:117;:::o;774:35::-;807:2;774:35;:::o;973:31::-;;;;:::o;10287:223::-;10383:7;;;;10369:10;:21;10361:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10459:6;:16;;;;;;;;;;;;;;10486:6;:16;;;;;;;;;;;10287:223::o;8585:35::-;;;;:::o;8627:::-;;;;:::o;12703:1935::-;12752:17;8848:8;;8860:1;8848:13;8840:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8912:1;8901:8;:12;;;8912:1;12825:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12890:6:0::1;::::0;12883:39:::1;::::0;;;;;12916:4:::1;12883:39;::::0;::::1;::::0;;;12782:56;;-1:-1:-1;12782:56:0;;-1:-1:-1;12864:16:0::1;::::0;12890:6:::1;::::0;;::::1;::::0;12883:24:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;12890:6;12883:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12883:39:0;12959:6:::1;::::0;12952:39:::1;::::0;;;;;12985:4:::1;12952:39;::::0;::::1;::::0;;;12883;;-1:-1:-1;12933:16:0::1;::::0;12959:6:::1;::::0;;::::1;::::0;12952:24:::1;::::0;:39;;;;;12883::::1;::::0;12952;;;;;;;;12959:6;12952:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12952:39:0;;-1:-1:-1;13002:15:0::1;13020:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;13002:41:::0;-1:-1:-1;13054:15:0::1;13072:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;13054:41;;13108:10;13121:30;13130:9;13141;13121:8;:30::i;:::-;13162:20;13185:11:::0;13108:43;;-1:-1:-1;13289:17:0;13285:981:::1;;13355:7;::::0;13342:32:::1;::::0;;;;;;;13323:16:::1;::::0;13355:7:::1;;::::0;13342:30:::1;::::0;:32:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;13355:7;13342:32;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13342:32:0;;-1:-1:-1;13393:10:0::1;:22;::::0;::::1;;13389:686;;;13458:8;13448:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13448:38:0;;-1:-1:-1;13535:13:0;;;;;:41:::1;;;13573:2;13552:9;:24;;13535:41;13505:146;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13389:686;;;13722:22;::::0;::::1;::::0;13692:132:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13855:94;8101:5;13855:31;13865:20;:7:::0;13877;13865:11:::1;:20::i;:::-;13855:9;:31::i;:94::-;13843:106;;13968:36;13982:1;8101:5;13968;:36::i;:::-;13285:981;;;;14119:135;14146:37;::::0;::::1;:25;:7:::0;14158:12;14146:11:::1;:25::i;:::-;:37;;;;;;14202;::::0;::::1;:25;:7:::0;14214:12;14202:11:::1;:25::i;:::-;:37;;;;;;14119:8;:135::i;:::-;14107:147;;13285:981;14310:1;14298:9;:13;14276:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14397:20;14403:2;14407:9;14397:5;:20::i;:::-;14430:49;14438:8;14448;14458:9;14469;14430:7;:49::i;:::-;14494:5;14490:50;;;14531:8;::::0;14509:31:::1;::::0;14531:8:::1;14517::::0;;::::1;::::0;14531;;::::1;;14509:21;:31::i;:::-;14501:5;:39:::0;14490:50:::1;14596:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;14601:10:::1;::::0;14596:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8947:1:0;8936:8;:12;-1:-1:-1;12703:1935:0;;;-1:-1:-1;;;;;;12703:1935:0:o;849:44::-;;;;;;;;;;;;;:::o;8669:20::-;;;;:::o;1240:41::-;;;;;;;;;;;;;:::o;14750:1502::-;14826:15;14843;8848:8;;8860:1;8848:13;8840:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8912:1;8901:8;:12;;;8912:1;14919:13:::1;:11;:13::i;:::-;-1:-1:-1::0;14976:6:0::1;::::0;15026::::1;::::0;15077:40:::1;::::0;;;;;15111:4:::1;15077:40;::::0;::::1;::::0;;;14876:56;;-1:-1:-1;14876:56:0;;-1:-1:-1;14976:6:0::1;::::0;;::::1;::::0;15026;::::1;::::0;14958:15:::1;::::0;14976:6;;15077:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;14976:6;15077:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15077:40:0;15147::::1;::::0;;;;;15181:4:::1;15147:40;::::0;::::1;::::0;;;15077;;-1:-1:-1;15128:16:0::1;::::0;15147:25:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;15077::::1;::::0;15147;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15147:40:0;15236:4:::1;15198:17;15218:24:::0;;;:9:::1;15147:40;15218:24:::0;;;;;15147:40;;-1:-1:-1;15268:30:0::1;15277:9:::0;15288;15268:8:::1;:30::i;:::-;15309:20;15332:11:::0;15255:43;;-1:-1:-1;15332:11:0;15442:23:::1;:9:::0;15456:8;15442:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;15575:12:0;15549:23:::1;:9:::0;15563:8;15549:13:::1;:23::i;:::-;:38;;;;;;15539:48;;15678:1;15668:7;:11;:26;;;;;15693:1;15683:7;:11;15668:26;15646:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15780:31;15794:4;15801:9;15780:5;:31::i;:::-;15822:35;15836:7;15845:2;15849:7;15822:13;:35::i;:::-;15868;15882:7;15891:2;15895:7;15868:13;:35::i;:::-;15925:40;::::0;;;;;15959:4:::1;15925:40;::::0;::::1;::::0;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;::::1;::::0;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15925:40:0;15987::::1;::::0;;;;;16021:4:::1;15987:40;::::0;::::1;::::0;;;15925;;-1:-1:-1;15987:25:0::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;15925::::1;::::0;15987;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15987:40:0;;-1:-1:-1;16040:49:0::1;16048:8:::0;15987:40;16068:9;16079;16040:7:::1;:49::i;:::-;16104:5;16100:50;;;16141:8;::::0;16119:31:::1;::::0;16141:8:::1;16127::::0;;::::1;::::0;16141;;::::1;;16119:21;:31::i;:::-;16111:5;:39:::0;16100:50:::1;16206:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;16211:10:::1;::::0;16206:38:::1;::::0;;;;;;;;;::::1;8924:1;;;;;;;;;8947::::0;8936:8;:12;;;;14750:1502;;;:::o;730:37::-;;;;;;;;;;;;;;;;;;;:::o;3068:142::-;3131:4;3148:32;3158:10;3170:2;3174:5;3148:9;:32::i;8057:49::-;8101:5;8057:49;:::o;18878:434::-;8848:8;;8860:1;8848:13;8840:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8912:1;8901:8;:12;18947:6:::1;::::0;18997::::1;::::0;19141:8:::1;::::0;19096:40:::1;::::0;;;;;19130:4:::1;19096:40;::::0;::::1;::::0;;;18947:6:::1;::::0;;::::1;::::0;18997;;::::1;::::0;19029:132:::1;::::0;18947:6;;19079:2;;19096:54:::1;::::0;19141:8:::1;;::::0;18947:6;;19096:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;;18947:6;19096:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19096:40:0;;:44:::1;:54::i;:::-;19029:13;:132::i;:::-;19172;19200:7;19222:2;19239:54;19284:8;;;;;;;;;;;19239:54;;19246:7;19239:25;;;19273:4;19239:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;19172:132;-1:-1:-1::0;;8947:1:0;8936:8;:12;-1:-1:-1;18878:434:0:o;8226:22::-;;;;;;:::o;8283:21::-;;;;;;:::o;3599:1020::-;3821:15;3809:8;:27;;3801:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3985:16;;4229:13;;;;3880:14;4229:13;;;:6;:13;;;;;;;;:15;;;;;;;;;4052:250;;1167:66;4052:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4020:301;;;;;;3921:415;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3897:450;;;;;;;;;4385:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:14;;4229:15;4385:26;;;;;-1:-1:-1;4385:26:0;;;;;;;;;;4229:15;4385:26;;;;;;;;;;;;;;;-1:-1:-1;;4385:26:0;;;;;;-1:-1:-1;;4444:30:0;;;;;;;:59;;;4498:5;4478:25;;:16;:25;;;4444:59;4422:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4580:31;4589:5;4596:7;4605:5;4580:8;:31::i;:::-;3599:1020;;;;;;;;;:::o;900:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;19361:221::-;8848:8;;8860:1;8848:13;8840:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8912:1;8901:8;:12;19431:6:::1;::::0;19424:39:::1;::::0;;;;;19457:4:::1;19424:39;::::0;::::1;::::0;;;19402:172:::1;::::0;19431:6:::1;;::::0;19424:24:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;19431:6;19424:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19424:39:0;19485:6:::1;::::0;19478:39:::1;::::0;;;;;19511:4:::1;19478:39;::::0;::::1;::::0;;;19485:6:::1;::::0;;::::1;::::0;19478:24:::1;::::0;:39;;;;;19424::::1;::::0;19478;;;;;;;;19485:6;19478:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19478:39:0;19532:8:::1;::::0;::::1;::::0;;::::1;::::0;19555;;::::1;;19402:7;:172::i;:::-;8947:1:::0;8936:8;:12;19361:221::o;9285:401::-;8175:34;;;;;;;;;;;;;;;;;9464:43;;9439:10;9464:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9439:79;;;;9404:12;;9418:17;;9439:10;;;9464:43;9439:79;;;9464:43;9439:79;;9464:43;9439:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9403:115;;;;9551:7;:57;;;;-1:-1:-1;9563:11:0;;:16;;:44;;;9594:4;9583:24;;;;;;;;;;;;;;;-1:-1:-1;9583:24:0;9563:44;9529:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9285:401;;;;;:::o;455:151::-;513:9;543:6;;;:30;;-1:-1:-1;;558:5:0;;;572:1;567;558:5;567:1;553:15;;;;;:20;543:30;535:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;309:138;402:5;;;397:16;;;;389:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10595:1030;10770:23;;;;;;:50;;-1:-1:-1;10797:23:0;;;;10770:50;10748:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10992:18;;10919:23;:15;:23;;;10992:18;;;;;10975:35;;;11048:15;;;;;;:33;;-1:-1:-1;11067:14:0;;;;;11048:33;:51;;;;-1:-1:-1;11085:14:0;;;;;11048:51;11044:410;;;11291:11;11218:84;;11226:44;11260:9;11226:27;11243:9;11226:16;:27::i;:::-;:33;;;;:44::i;:::-;11177:20;:125;;11218:53;;;;;:84;;;;11177:125;;;11358:84;;;11366:44;11400:9;11366:27;11383:9;11366:16;:27::i;:44::-;11317:20;:125;;11358:53;;;;;:84;;;;11317:125;;;11044:410;11464:8;:28;;;;;;;;;;;;11503;;;;;;;;;;;;11542:35;;;;;;;;;;;;11593:24;;;11598:8;;;11593:24;;11608:8;;;;;;;11593:24;;;;;;;;;;;;;;;;;10595:1030;;;;;;:::o;2431:206::-;2549:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2598:31;;;;;;;;;;;;;;;;;2431:206;;;:::o;2645:257::-;2776:15;;;;;;;:9;:15;;;;;;:26;;2796:5;2776:19;:26::i;:::-;2758:15;;;;;;;;:9;:15;;;;;;:44;;;;2829:13;;;;;;;:24;;2847:5;2829:17;:24::i;:::-;2813:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2869:25;;;;;;;2813:13;;2869:25;;;;;;;;;;;;;2645:257;;;:::o;11715:876::-;11806:10;11834:13;11863:7;;;;;;;;;;;11850:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11850:29:0;11945:5;;11898:19;;;;;;;-1:-1:-1;11850:29:0;;-1:-1:-1;11945:5:0;11976:608;;12006:11;;12002:512;;12038:13;12054:44;12064:33;;:18;;;;:33;;:22;:33::i;12054:44::-;12038:60;;12117:17;12137;12147:6;12137:9;:17::i;:::-;12117:37;;12185:9;12177:5;:17;12173:326;;;12219:17;12239:37;12255:20;:5;12265:9;12255;:20::i;:::-;12239:11;;;:15;:37::i;:::-;12219:57;-1:-1:-1;12299:19:0;12321:27;12338:9;12321:12;:5;12331:1;12321:9;:12::i;:::-;:16;;:27::i;:::-;12299:49;;12371:17;12403:11;12391:9;:23;;;;;;;-1:-1:-1;12441:13:0;;12437:42;;12456:23;12462:5;12469:9;12456:5;:23::i;:::-;12173:326;;;;12002:512;;;11976:608;;;12535:11;;12531:53;;12571:1;12563:5;:9;12531:53;11715:876;;;;;;:::o;4913:303::-;4958:6;4985:1;4981;:5;4977:232;;;-1:-1:-1;5007:1:0;5040;5036;5032:5;;:9;5056:92;5067:1;5063;:5;5056:92;;;5093:1;5089:5;;5131:1;5126;5122;5118;:5;;;;;;:9;5117:15;;;;;;5113:19;;5056:92;;;4977:232;;;;5169:6;;5165:44;;-1:-1:-1;5196:1:0;5165:44;4913:303;;;:::o;1999:204::-;2075:11;;:22;;2091:5;2075:15;:22::i;:::-;2061:11;:36;;;2124:13;;;;;:9;:13;;;;;;:24;;2142:5;2124:17;:24::i;:::-;2108:13;;;;;;;:9;:13;;;;;;;;:40;;;;2164:31;;;;;;;2108:13;;;;2164:31;;;;;;;;;;1999:204;;:::o;4699:96::-;4751:6;4778:1;4774;:5;:13;;4786:1;4774:13;;;4782:1;4774:13;4770:17;4699:96;-1:-1:-1;;;4699:96:0:o;2211:212::-;2293:15;;;;;;;:9;:15;;;;;;:26;;2313:5;2293:19;:26::i;:::-;2275:15;;;;;;;:9;:15;;;;;:44;;;;2344:11;:22;;2360:5;2344:15;:22::i;:::-;2330:11;:36;;;2382:33;;;;;;;;;;;;;;;;;;;;;;2211:212;;:::o;5485:120::-;5561:10;;5430:6;5561:17;;5485:120::o;5676:108::-;5736:9;5766:10;;;5762:14;;;5766:10;5762:14;;;;;;5676:108;-1:-1:-1;;;5676:108:0:o;164:137::-;257:5;;;252:16;;;;244:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

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