Contract 0xb929914B89584b4081C7966AC6287636F7EfD053

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcb5e3972004f42dd37e4afe1ef287f8aad0d576377bc75bb8accc4c2a7fe5ad1Approve32418982023-03-29 11:19:008 hrs 59 mins ago0x0888d1945dc2a77285b3280a6c7283194ac8888a IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.002448789
0xfefe330b0466cab829c923e8f4b162a2813dde0e33e0b4c665bf7e8574eb5aaaApprove32413382023-03-29 9:23:4210 hrs 54 mins ago0x4b9de6fdbdbc6a406f8187bf852081a0d76db254 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026126
0xc6182a937272f8dabf964f9ac54735d5159229bd54998fa92ff4a076fd5f65a1Approve32413182023-03-29 9:19:3010 hrs 58 mins ago0x4b9de6fdbdbc6a406f8187bf852081a0d76db254 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026114
0x4e61b065916c8f9b69fd32add3fae6ec4cc8b4f09108a3259308a92b679d4407Approve32002942023-03-23 11:42:546 days 8 hrs ago0x9997f27fcf2d463196ee6b2e3b7596d48d8e7c5e IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026126
0x360504c15ec85a5b15920cc4b19cb25e808767c628cbf33d2959c218488f46aaApprove32001742023-03-23 11:17:426 days 9 hrs ago0x9997f27fcf2d463196ee6b2e3b7596d48d8e7c5e IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026114
0x81815bbde3ecb611aeb31b0a2e1b2c53cc1f1236e1baba4fc6c222a8c76f2a9bApprove31875472023-03-21 15:59:548 days 4 hrs ago0x0d4736132c277a9f5fd20e0a38c7914373a14221 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0046134
0xfe5ac8f874964e45b56f2d6bf32e306ef59718cc62e22b923cb73c953e5df09aApprove31840732023-03-21 4:03:008 days 16 hrs ago0xaa2a30aafea828c6426ef40cf7ca1fd21692b795 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.002689547
0x2e2fc500aa5a2abd2ac67fe3bc2d8b4656fc1bb769d6b2ff6d67d989eeaeb3e4Approve31840722023-03-21 4:02:488 days 16 hrs ago0xaa2a30aafea828c6426ef40cf7ca1fd21692b795 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004709397
0x79a236885340f34ef9d75f835930f2bcdd5fbe37ade0b1ed554d4abf39ca8a74Approve31738492023-03-19 17:03:1810 days 3 hrs ago0x05255cdc6116e3d090aa0ab9e38b8206435a8cb6 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0046134
0x6da43d6d71e5a4d9ac8be1b81e9a917e02841fe8f73120070bf5352bfdc54bb2Approve31434182023-03-15 8:51:1814 days 11 hrs ago0x467286f232ebe1b105cb05379c8736329b504c4c IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0046098
0x1e68ca53ad920f6caab9c2d153f3cb91ea08c15a721bfdd5d0c26de2738238f2Transfer31372742023-03-14 11:47:2415 days 8 hrs ago0x1b3f137137d67fe38fde34517c528875e441ffe3 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004743298
0x3b3c167275f6b987f1ff7f85e940c816d9cc27b1a2c10c9a2b3d203d885a4dc3Approve31259812023-03-12 9:31:2617 days 10 hrs ago0xe5c1dfa440af232a037eb39cc557fd69c3737b83 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004682601
0xb0f3409e102188c1f04369e743f227bd7f9270687a822f3715a7330f2cacf3e0Approve31259172023-03-12 8:50:0117 days 11 hrs ago0x67ea7a07f9aaf3cea1b25c3994a8226bd0b3a7f3 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0046134
0x58221eea8a039b7b43332ad333ddba5e6777e8d56b75ecd5b8cd451b88c85a48Approve31087822023-03-09 12:27:1820 days 7 hrs ago0x1c7411ce07ee24cca0fab2401d66ef72b81f83d0 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004682601
0x7f18e339f6d6e74124a350b973f3b498a9f8eccfd4adf5c623ad1b4268bc1290Approve31015742023-03-08 11:46:2421 days 8 hrs ago0x4c6f530d78dbbc317fbe09ded76beae802ff1951 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026114
0x07ce21f6aa8c4ea2dd5269a5c698932a41ebbf9c4dbe11cf91f1264ecd209ff5Transfer30683122023-03-03 18:40:0026 days 1 hr ago0x42238feb30ddb3991c57ae74af2f05f26cf41139 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004743298
0xe3a9fcefe95897af1536afffc0e9f4c71f746413ad1b35c5f55cede2ac28734dApprove30671922023-03-03 14:50:0626 days 5 hrs ago0x30fa24b3e905aadd8d764ce901a493391e183007 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.00470289996
0xe65686ce9e76488fbde05553cee9e26f3391b72c3ef4ec52ddbc59d086af146dApprove30587362023-03-02 10:08:3027 days 10 hrs ago0x48dac9d123735ffd05616890024c728664e7a613 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026114
0xf69be696b84338ba0d6164276becfa3eaaaf9cf5ea3e936f46a6c64b0a8f17b9Approve30453702023-02-28 12:25:4829 days 7 hrs ago0xb0f61a44b7093ec93e0282f0221e464e8bb90f15 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004709397
0xbf8ba63edabc57b0d528a6c09b1ce79677cf08edab14b245fb4ba498568446c0Approve30397192023-02-27 17:03:0630 days 3 hrs ago0x2f5203ea91a9a620e5e469a53b54b0cddaf8fe8d IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004709397
0x41475483f5e7e3528e1d231a934eefca8153faa7b82feb9ce17cd88cc248f45cApprove30247132023-02-25 13:44:4832 days 6 hrs ago0xfe20e41dfb4b228d14c7c8c15f40792a69c5095b IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004709397
0x87a1ed65ab4e1c45985d512bc32366a40c83ebf213bc1c969cab2c0ccb9feb50Approve30112712023-02-23 15:59:4834 days 4 hrs ago0x6140b013fd4acfe15c302b605b5de388cd8897bd IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.0026114
0x029e5a94aa2f3acf7ba409eed5f9e407ba7d0735e21a5a0e8134020a511dabffApprove29977322023-02-21 17:40:2436 days 2 hrs ago0x935ec430a11e27d204a80a2d75637424d57b714d IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.00470289996
0xffee9421655f6f3ec51e382e3ca1cafce19bd548ceebdd78a240b2c29e632778Approve29776592023-02-18 20:43:4838 days 23 hrs ago0x1e670bb5fec8d4cebddc3d2ad99d68f15210d742 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004659534
0xf76cea46611b291b7d7e3a8885d42cf6db35f4dc28cb2afd9396221b37e9bf88Approve29715362023-02-17 23:45:3639 days 20 hrs ago0x1e670bb5fec8d4cebddc3d2ad99d68f15210d742 IN  0xb929914b89584b4081c7966ac6287636f7efd0530 GLMR0.004709397
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xf0b28ab799cd2d39c788d7a55585bd67ca500288ba6159d243e27706be558a891999672022-01-15 13:19:48438 days 6 hrs ago Beamswap: Amm Factory.V1  Contract Creation0 GLMR
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x99588867e817023162F4d4829995299054a5fC57

Contract Name:
BeamSwapPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-01-16
*/

// Sources flattened with hardhat v2.7.1 https://hardhat.org

// File contracts/uniswapv2/interfaces/IBeamSwapPair.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (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);

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

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

    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);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}


// File contracts/uniswapv2/interfaces/IBeamSwapERC20.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (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);

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

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


// File contracts/uniswapv2/libraries/SafeMath.sol

pragma solidity =0.5.16;

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

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

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

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


// File contracts/uniswapv2/BeamSwapERC20.sol

pragma solidity =0.5.16;
contract BeamSwapERC20 is IBeamSwapERC20 {
    using SafeMath for uint256;

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


// File contracts/uniswapv2/libraries/Math.sol

pragma solidity =0.5.16;

// a library for performing various math operations

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

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


// File contracts/uniswapv2/libraries/UQ112x112.sol

pragma solidity =0.5.16;

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

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

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

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

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


// File contracts/uniswapv2/interfaces/IERC20.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

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);
}


// File contracts/uniswapv2/interfaces/IBeamSwapFactory.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

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

    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(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;
}


// File contracts/uniswapv2/interfaces/IBeamSwapCallee.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

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


// File contracts/uniswapv2/BeamSwapPair.sol

pragma solidity =0.5.16;
contract BeamSwapPair is IBeamSwapPair, BeamSwapERC20 {
    using SafeMath 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, "BeamSwap: 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))),
            "BeamSwap: 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, "BeamSwap: 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),
            "BeamSwap: 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 = IBeamSwapFactory(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(1307692308) / 1000000000).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) {
            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, "BeamSwap: 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,
            "BeamSwap: 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,
            "BeamSwap: INSUFFICIENT_OUTPUT_AMOUNT"
        );
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        require(
            amount0Out < _reserve0 && amount1Out < _reserve1,
            "BeamSwap: 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, "BeamSwap: 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)
                IBeamSwapCallee(to).BeamSwapCall(
                    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,
            "BeamSwap: 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),
                "Beamswap: K"
            );
        }

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

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

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

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b5060405146908060526124698239604080519182900360520182208282018252600c83526b4265616d53776170204c507360a01b6020938401528151808301835260018152603160f81b908401528151808401919091527f914f5ad80ee1d74e754de1523211b4460f7bd73d18055968f8c3d80d847e90b1818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612362806101076000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610544578063d505accf1461054c578063dd62ed3e1461059d578063fff6cae9146105cb576101b9565b8063ba9a7a561461050e578063bc25cf7714610516578063c45a01551461053c576101b9565b80637ecebe00116100d35780637ecebe001461047557806389afcb441461049b57806395d89b41146104da578063a9059cbb146104e2576101b9565b80636a6278421461042157806370a08231146104475780637464fc3d1461046d576101b9565b806323b872dd116101665780633644e515116101405780633644e515146103db578063485cc955146103e35780635909c0d5146104115780635a3d549314610419576101b9565b806323b872dd1461037f57806330adf81f146103b5578063313ce567146103bd576101b9565b8063095ea7b311610197578063095ea7b3146103015780630dfe16811461034157806318160ddd14610365576101b9565b8063022c0d9f146101be57806306fdde031461024c5780630902f1ac146102c9575b600080fd5b61024a600480360360808110156101d457600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561020b57600080fd5b82018360208201111561021d57600080fd5b8035906020019184600183028401116401000000008311171561023f57600080fd5b5090925090506105d3565b005b610254610b3c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d1610b75565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61032d6004803603604081101561031757600080fd5b506001600160a01b038135169060200135610b9f565b604080519115158252519081900360200190f35b610349610bb6565b604080516001600160a01b039092168252519081900360200190f35b61036d610bc5565b60408051918252519081900360200190f35b61032d6004803603606081101561039557600080fd5b506001600160a01b03813581169160208101359091169060400135610bcb565b61036d610c65565b6103c5610c89565b6040805160ff9092168252519081900360200190f35b61036d610c8e565b61024a600480360360408110156103f957600080fd5b506001600160a01b0381358116916020013516610c94565b61036d610d39565b61036d610d3f565b61036d6004803603602081101561043757600080fd5b50356001600160a01b0316610d45565b61036d6004803603602081101561045d57600080fd5b50356001600160a01b0316611044565b61036d611056565b61036d6004803603602081101561048b57600080fd5b50356001600160a01b031661105c565b6104c1600480360360208110156104b157600080fd5b50356001600160a01b031661106e565b6040805192835260208301919091528051918290030190f35b610254611413565b61032d600480360360408110156104f857600080fd5b506001600160a01b03813516906020013561144c565b61036d611459565b61024a6004803603602081101561052c57600080fd5b50356001600160a01b031661145f565b6103496115c9565b6103496115d8565b61024a600480360360e081101561056257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115e7565b61036d600480360360408110156105b357600080fd5b506001600160a01b038135811691602001351661180f565b61024a61182c565b600c5460011461061d576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55841515806106305750600084115b61066b5760405162461bcd60e51b815260040180806020018281038252602481526020018061230a6024913960400191505060405180910390fd5b600080610676610b75565b5091509150816001600160701b03168710801561069b5750806001600160701b031686105b6106ec576040805162461bcd60e51b815260206004820181905260248201527f4265616d537761703a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b60065460075460009182916001600160a01b0391821691908116908916821480159061072a5750806001600160a01b0316896001600160a01b031614155b61077b576040805162461bcd60e51b815260206004820152601460248201527f4265616d537761703a20494e56414c49445f544f000000000000000000000000604482015290519081900360640190fd5b8a1561078c5761078c828a8d61198d565b891561079d5761079d818a8c61198d565b861561085857886001600160a01b03166399f9fa51338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083f57600080fd5b505af1158015610853573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b5051925060009150506001600160701b0385168a90038311610961576000610970565b89856001600160701b03160383035b9050600089856001600160701b031603831161098d57600061099c565b89856001600160701b03160383035b905060008211806109ad5750600081115b6109e85760405162461bcd60e51b81526004018080602001828103825260238152602001806122e76023913960400191505060405180910390fd5b6000610a1c6109fe84600363ffffffff611b4016565b610a10876103e863ffffffff611b4016565b9063ffffffff611bac16565b90506000610a346109fe84600363ffffffff611b4016565b9050610a65620f4240610a596001600160701b038b8116908b1663ffffffff611b4016565b9063ffffffff611b4016565b610a75838363ffffffff611b4016565b1015610ac8576040805162461bcd60e51b815260206004820152600b60248201527f4265616d737761703a204b000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ad684848888611c04565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600c81526020017f4265616d53776170204c5073000000000000000000000000000000000000000081525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610bac338484611de1565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c50576001600160a01b0384166000908152600260209081526040808320338452909152902054610c2b908363ffffffff611bac16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c5b848484611e43565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610cf3576040805162461bcd60e51b815260206004820152601360248201527f4265616d537761703a20464f5242494444454e00000000000000000000000000604482015290519081900360640190fd5b600680546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d91576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c81905580610da1610b75565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610df557600080fd5b505afa158015610e09573d6000803e3d6000fd5b505050506040513d6020811015610e1f57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d6020811015610e9c57600080fd5b505190506000610ebb836001600160701b03871663ffffffff611bac16565b90506000610ed8836001600160701b03871663ffffffff611bac16565b90506000610ee68787611efd565b60005490915080610f2357610f0f6103e8610a10610f0a878763ffffffff611b4016565b61206b565b9850610f1e60006103e86120bd565b610f72565b610f6f6001600160701b038916610f40868463ffffffff611b4016565b81610f4757fe5b046001600160701b038916610f62868563ffffffff611b4016565b81610f6957fe5b04612153565b98505b60008911610fb15760405162461bcd60e51b81526004018080602001828103825260278152602001806122996027913960400191505060405180910390fd5b610fbb8a8a6120bd565b610fc786868a8a611c04565b8115610ff757600854610ff3906001600160701b0380821691600160701b90041663ffffffff611b4016565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146110bb576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c819055806110cb610b75565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561112757600080fd5b505afa15801561113b573d6000803e3d6000fd5b505050506040513d602081101561115157600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561119f57600080fd5b505afa1580156111b3573d6000803e3d6000fd5b505050506040513d60208110156111c957600080fd5b5051306000908152600160205260408120549192506111e88888611efd565b600054909150806111ff848763ffffffff611b4016565b8161120657fe5b049a508061121a848663ffffffff611b4016565b8161122157fe5b04995060008b118015611234575060008a115b61126f5760405162461bcd60e51b81526004018080602001828103825260278152602001806122c06027913960400191505060405180910390fd5b611279308461216b565b611284878d8d61198d565b61128f868d8c61198d565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156112d557600080fd5b505afa1580156112e9573d6000803e3d6000fd5b505050506040513d60208110156112ff57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561134b57600080fd5b505afa15801561135f573d6000803e3d6000fd5b505050506040513d602081101561137557600080fd5b5051935061138585858b8b611c04565b81156113b5576008546113b1906001600160701b0380821691600160701b90041663ffffffff611b4016565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600781526020017f4245414d2d4c500000000000000000000000000000000000000000000000000081525081565b6000610bac338484611e43565b6103e881565b600c546001146114a9576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926115589285928792611553926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561151b57600080fd5b505afa15801561152f573d6000803e3d6000fd5b505050506040513d602081101561154557600080fd5b50519063ffffffff611bac16565b61198d565b600854604080516370a0823160e01b815230600482015290516115bf928492879261155392600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561151b57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b4284101561163c576040805162461bcd60e51b815260206004820152601160248201527f4265616d537761703a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611772573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117a85750886001600160a01b0316816001600160a01b0316145b6117f9576040805162461bcd60e51b815260206004820152601b60248201527f4265616d537761703a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b611804898989611de1565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611876576040805162461bcd60e51b815260206004820152601060248201526f1099585b54ddd85c0e881313d0d2d15160821b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611986926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156118c757600080fd5b505afa1580156118db573d6000803e3d6000fd5b505050506040513d60208110156118f157600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561193e57600080fd5b505afa158015611952573d6000803e3d6000fd5b505050506040513d602081101561196857600080fd5b50516008546001600160701b0380821691600160701b900416611c04565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b03167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b60208310611a535780518252601f199092019160209182019101611a34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ab5576040519150601f19603f3d011682016040523d82523d6000602084013e611aba565b606091505b5091509150818015611ae8575080511580611ae85750808060200190516020811015611ae557600080fd5b50515b611b39576040805162461bcd60e51b815260206004820152601960248201527f4265616d537761703a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b5050505050565b6000811580611b5b57505080820282828281611b5857fe5b04145b610bb0576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610bb0576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6001600160701b038411801590611c2257506001600160701b038311155b611c73576040805162461bcd60e51b815260206004820152601260248201527f4265616d537761703a204f564552464c4f570000000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611ca357506001600160701b03841615155b8015611cb757506001600160701b03831615155b15611d28578063ffffffff16611ce585611cd086612209565b6001600160e01b03169063ffffffff61221b16565b600980546001600160e01b03929092169290920201905563ffffffff8116611d1084611cd087612209565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff16600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611e6c908263ffffffff611bac16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611ea1908263ffffffff61224016565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4e57600080fd5b505afa158015611f62573d6000803e3d6000fd5b505050506040513d6020811015611f7857600080fd5b5051600b546001600160a01b038216158015945091925090612057578015612052576000611fbb610f0a6001600160701b0388811690881663ffffffff611b4016565b90506000611fc88361206b565b90508082111561204f576000611ff6611fe7848463ffffffff611bac16565b6000549063ffffffff611b4016565b9050600061202b83633b9aca0061201787634df1cd1463ffffffff611b4016565b8161201e57fe5b049063ffffffff61224016565b9050600081838161203857fe5b049050801561204b5761204b87826120bd565b5050505b50505b612063565b8015612063576000600b555b505092915050565b600060038211156120ae575080600160028204015b818110156120a85780915060028182858161209757fe5b0401816120a057fe5b049050612080565b506120b8565b81156120b8575060015b919050565b6000546120d0908263ffffffff61224016565b60009081556001600160a01b0383168152600160205260409020546120fb908263ffffffff61224016565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106121625781612164565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612194908263ffffffff611bac16565b6001600160a01b038316600090815260016020526040812091909155546121c1908263ffffffff611bac16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161223857fe5b049392505050565b80820182811015610bb0576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4265616d537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444265616d537761703a20494e53554646494349454e545f4c49515549444954595f4255524e45444265616d537761703a20494e53554646494349454e545f494e5055545f414d4f554e544265616d537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a7231582013c88bfc04366e18194b3df75486edef14c097529764cab7c9dc21622f431afd64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11623:10908:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11623:10908:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19399:2376;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19399:2376:0;;;;;;;;-1:-1:-1;;;;;19399:2376:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19399:2376:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19399:2376:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;19399:2376:0;;-1:-1:-1;19399:2376:0;-1:-1:-1;19399:2376:0;:::i;:::-;;4817:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4817:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12645:313;;;:::i;:::-;;;;-1:-1:-1;;;;;12645:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6900:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6900:150:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11944:21;;;:::i;:::-;;;;-1:-1:-1;;;;;11944:21:0;;;;;;;;;;;;;;4958:27;;;:::i;:::-;;;;;;;;;;;;;;;;7208:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7208:307:0;;;;;;;;;;;;;;;;;:::i;5259:108::-;;;:::i;4916:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5116:31;;;:::i;13951:209::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13951:209:0;;;;;;;;;;:::i;12274:35::-;;;:::i;12316:::-;;;:::i;16370:1311::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16370:1311:0;-1:-1:-1;;;;;16370:1311:0;;:::i;4992:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4992:44:0;-1:-1:-1;;;;;4992:44:0;;:::i;12358:20::-;;;:::i;5374:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5374:41:0;-1:-1:-1;;;;;5374:41:0;;:::i;17793:1494::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17793:1494:0;-1:-1:-1;;;;;17793:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4868:41;;;:::i;7058:142::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7058:142:0;;;;;;;;:::i;11753:49::-;;;:::i;21824:434::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21824:434:0;-1:-1:-1;;;;;21824:434:0;;:::i;11915:22::-;;;:::i;11972:21::-;;;:::i;7523:678::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7523:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5043:64::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5043:64:0;;;;;;;;;;:::i;22307:221::-;;;:::i;19399:2376::-;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;19576:14;;;;:32;;;19607:1;19594:10;:14;19576:32;19554:118;;;;-1:-1:-1;;;19554:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19684:17;19703;19726:13;:11;:13::i;:::-;19683:56;;;;;19800:9;-1:-1:-1;;;;;19787:22:0;:10;:22;:48;;;;;19826:9;-1:-1:-1;;;;;19813:22:0;:10;:22;19787:48;19765:130;;;;;-1:-1:-1;;;19765:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20063:6;;20102;;19908:16;;;;-1:-1:-1;;;;;20063:6:0;;;;20102;;;;20131:13;;;;;;;:30;;;20154:7;-1:-1:-1;;;;;20148:13:0;:2;-1:-1:-1;;;;;20148:13:0;;;20131:30;20123:63;;;;;-1:-1:-1;;;20123:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20205:14;;20201:58;;20221:38;20235:7;20244:2;20248:10;20221:13;:38::i;:::-;20312:14;;20308:58;;20328:38;20342:7;20351:2;20355:10;20328:13;:38::i;:::-;20419:15;;20415:215;;20469:2;-1:-1:-1;;;;;20453:32:0;;20508:10;20541;20574;20607:4;;20453:177;;;;;;;;;;;;;-1:-1:-1;;;;;20453:177:0;-1:-1:-1;;;;;20453:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20453:177:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20453:177:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20453:177:0;;;;20415:215;20656:40;;;-1:-1:-1;;;20656:40:0;;20690:4;20656:40;;;;;;-1:-1:-1;;;;;20656:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20656:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20656:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20656:40:0;20722;;;-1:-1:-1;;;20722:40:0;;20756:4;20722:40;;;;;;20656;;-1:-1:-1;;;;;;20722:25:0;;;;;:40;;;;;20656;;20722;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20722:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20722:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20722:40:0;;-1:-1:-1;20784:17:0;;-1:-1:-1;;;;;;;20815:22:0;;;;;20804:33;;:101;;20904:1;20804:101;;;20877:10;20865:9;-1:-1:-1;;;;;20865:22:0;;20853:8;:35;20804:101;20784:121;;20916:17;20959:10;20947:9;-1:-1:-1;;;;;20947:22:0;;20936:8;:33;:101;;21036:1;20936:101;;;21009:10;20997:9;-1:-1:-1;;;;;20997:22:0;;20985:8;:35;20936:101;20916:121;;21082:1;21070:9;:13;:30;;;;21099:1;21087:9;:13;21070:30;21048:115;;;;-1:-1:-1;;;21048:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21266:24;21293:40;21316:16;:9;21330:1;21316:16;:13;:16;:::i;:::-;21293:18;:8;21306:4;21293:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;21266:67;-1:-1:-1;21348:24:0;21375:40;21398:16;:9;21412:1;21398:16;:13;:16;:::i;21375:40::-;21348:67;-1:-1:-1;21519:46:0;21557:7;21519:33;-1:-1:-1;;;;;21519:18:0;;;;:33;;;:22;:33;:::i;:::-;:37;:46;:37;:46;:::i;:::-;21456:38;:16;21477;21456:38;:20;:38;:::i;:::-;:109;;21430:182;;;;;-1:-1:-1;;;21430:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12605:1;;21636:49;21644:8;21654;21664:9;21675;21636:7;:49::i;:::-;21701:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21701:66:0;;;21706:10;;21701:66;;;;;;;;;-1:-1:-1;;12628:1:0;12617:8;:12;-1:-1:-1;;;;;;;;;19399:2376:0:o;4817:44::-;;;;;;;;;;;;;;;;;;;:::o;12645:313::-;12860:8;;-1:-1:-1;;;;;12860:8:0;;;;-1:-1:-1;;;12891:8:0;;;;;;-1:-1:-1;;;12932:18:0;;;;;12645:313::o;6900:150::-;6967:4;6984:36;6993:10;7005:7;7014:5;6984:8;:36::i;:::-;-1:-1:-1;7038:4:0;6900:150;;;;;:::o;11944:21::-;;;-1:-1:-1;;;;;11944:21:0;;:::o;4958:27::-;;;;:::o;7208:307::-;-1:-1:-1;;;;;7310:15:0;;7289:4;7310:15;;;:9;:15;;;;;;;;7326:10;7310:27;;;;;;;;-1:-1:-1;;7310:42:0;7306:143;;-1:-1:-1;;;;;7399:15:0;;;;;;:9;:15;;;;;;;;7415:10;7399:27;;;;;;;;:38;;7431:5;7399:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7369:15:0;;;;;;:9;:15;;;;;;;;7385:10;7369:27;;;;;;;:68;7306:143;7459:26;7469:4;7475:2;7479:5;7459:9;:26::i;:::-;-1:-1:-1;7503:4:0;7208:307;;;;;:::o;5259:108::-;5301:66;5259:108;:::o;4916:35::-;4949:2;4916:35;:::o;5116:31::-;;;;:::o;13951:209::-;14047:7;;-1:-1:-1;;;;;14047:7:0;14033:10;:21;14025:53;;;;;-1:-1:-1;;;14025:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14109:6;:16;;-1:-1:-1;;;;;14109:16:0;;;;;;;;;;;14136:6;:16;;;;;;;;;;;13951:209::o;12274:35::-;;;;:::o;12316:::-;;;;:::o;16370:1311::-;16419:17;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;;;12593:1;16492:13;:11;:13::i;:::-;-1:-1:-1;16557:6:0;;16550:39;;;-1:-1:-1;;;16550:39:0;;16583:4;16550:39;;;;;;16449:56;;-1:-1:-1;16449:56:0;;-1:-1:-1;16531:16:0;;-1:-1:-1;;;;;16557:6:0;;;;16550:24;;:39;;;;;;;;;;;;;;16557:6;16550:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16550:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16550:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16550:39:0;16626:6;;16619:39;;;-1:-1:-1;;;16619:39:0;;16652:4;16619:39;;;;;;16550;;-1:-1:-1;16600:16:0;;-1:-1:-1;;;;;16626:6:0;;;;16619:24;;:39;;;;;16550;;16619;;;;;;;;16626:6;16619:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16619:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16619:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16619:39:0;;-1:-1:-1;16669:15:0;16687:23;:8;-1:-1:-1;;;;;16687:23:0;;;:12;:23;:::i;:::-;16669:41;-1:-1:-1;16721:15:0;16739:23;:8;-1:-1:-1;;;;;16739:23:0;;;:12;:23;:::i;:::-;16721:41;;16775:10;16788:30;16797:9;16808;16788:8;:30::i;:::-;16829:20;16852:11;16775:43;;-1:-1:-1;16956:17:0;16952:402;;17002:54;11797:5;17002:31;17012:20;:7;17024;17012:20;:11;:20;:::i;:::-;17002:9;:31::i;:54::-;16990:66;;17071:36;17085:1;11797:5;17071;:36::i;:::-;16952:402;;;17207:135;-1:-1:-1;;;;;17234:37:0;;:25;:7;17246:12;17234:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;17290:37:0;;:25;:7;17302:12;17290:25;:11;:25;:::i;:::-;:37;;;;;;17207:8;:135::i;:::-;17195:147;;16952:402;17384:1;17372:9;:13;17364:65;;;;-1:-1:-1;;;17364:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17440:20;17446:2;17450:9;17440:5;:20::i;:::-;17473:49;17481:8;17491;17501:9;17512;17473:7;:49::i;:::-;17537:5;17533:50;;;17574:8;;17552:31;;-1:-1:-1;;;;;17560:8:0;;;;-1:-1:-1;;;17574:8:0;;;17552:31;:21;:31;:::i;:::-;17544:5;:39;17533:50;17639:34;;;;;;;;;;;;;;17644:10;;17639:34;;;;;;;;-1:-1:-1;;12628:1:0;12617:8;:12;-1:-1:-1;16370:1311:0;;;-1:-1:-1;;;;;;16370:1311:0:o;4992:44::-;;;;;;;;;;;;;:::o;12358:20::-;;;;:::o;5374:41::-;;;;;;;;;;;;;:::o;17793:1494::-;17869:15;17886;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;;;12593:1;17962:13;:11;:13::i;:::-;-1:-1:-1;18019:6:0;;18069;;18120:40;;;-1:-1:-1;;;18120:40:0;;18154:4;18120:40;;;;;;17919:56;;-1:-1:-1;17919:56:0;;-1:-1:-1;;;;;;18019:6:0;;;;18069;;;18001:15;;18019:6;;18120:25;;:40;;;;;;;;;;;;;;18019:6;18120:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18120:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18120:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18120:40:0;18190;;;-1:-1:-1;;;18190:40:0;;18224:4;18190:40;;;;;;18120;;-1:-1:-1;18171:16:0;;-1:-1:-1;;;;;18190:25:0;;;;;:40;;;;;18120;;18190;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18190:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18190:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18190:40:0;18279:4;18241:17;18261:24;;;:9;18190:40;18261:24;;;;;18190:40;;-1:-1:-1;18311:30:0;18320:9;18331;18311:8;:30::i;:::-;18352:20;18375:11;18298:43;;-1:-1:-1;18375:11:0;18485:23;:9;18499:8;18485:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;18618:12:0;18592:23;:9;18606:8;18592:23;:13;:23;:::i;:::-;:38;;;;;;18582:48;;18721:1;18711:7;:11;:26;;;;;18736:1;18726:7;:11;18711:26;18689:115;;;;-1:-1:-1;;;18689:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18815:31;18829:4;18836:9;18815:5;:31::i;:::-;18857:35;18871:7;18880:2;18884:7;18857:13;:35::i;:::-;18903;18917:7;18926:2;18930:7;18903:13;:35::i;:::-;18960:40;;;-1:-1:-1;;;18960:40:0;;18994:4;18960:40;;;;;;-1:-1:-1;;;;;18960:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18960:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18960:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18960:40:0;19022;;;-1:-1:-1;;;19022:40:0;;19056:4;19022:40;;;;;;18960;;-1:-1:-1;;;;;;19022:25:0;;;;;:40;;;;;18960;;19022;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19022:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19022:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19022:40:0;;-1:-1:-1;19075:49:0;19083:8;19022:40;19103:9;19114;19075:7;:49::i;:::-;19139:5;19135:50;;;19176:8;;19154:31;;-1:-1:-1;;;;;19162:8:0;;;;-1:-1:-1;;;19176:8:0;;;19154:31;:21;:31;:::i;:::-;19146:5;:39;19135:50;19241:38;;;;;;;;;;;;;;-1:-1:-1;;;;;19241:38:0;;;19246:10;;19241:38;;;;;;;;;;;12605:1;;;;;;;;;12628;12617:8;:12;;;;17793:1494;;;:::o;4868:41::-;;;;;;;;;;;;;;;;;;;:::o;7058:142::-;7121:4;7138:32;7148:10;7160:2;7164:5;7138:9;:32::i;11753:49::-;11797:5;11753:49;:::o;21824:434::-;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;21893:6;;21943;;22087:8;;22042:40;;;-1:-1:-1;;;22042:40:0;;22076:4;22042:40;;;;;;-1:-1:-1;;;;;21893:6:0;;;;21943;;;;21975:132;;21893:6;;22025:2;;22042:54;;-1:-1:-1;;;;;22087:8:0;;21893:6;;22042:25;;:40;;;;;;;;;;;;;;;21893:6;22042:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22042:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22042:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22042:40:0;;:54;:44;:54;:::i;:::-;21975:13;:132::i;:::-;22230:8;;22185:40;;;-1:-1:-1;;;22185:40:0;;22219:4;22185:40;;;;;;22118:132;;22146:7;;22168:2;;22185:54;;-1:-1:-1;;;22230:8:0;;-1:-1:-1;;;;;22230:8:0;;-1:-1:-1;;;;;22185:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;22118:132:0;-1:-1:-1;;12628:1:0;12617:8;:12;-1:-1:-1;21824:434:0:o;11915:22::-;;;-1:-1:-1;;;;;11915:22:0;;:::o;11972:21::-;;;-1:-1:-1;;;;;11972:21:0;;:::o;7523:678::-;7675:15;7663:8;:27;;7655:57;;;;;-1:-1:-1;;;7655:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7828:16;;-1:-1:-1;;;;;7924:13:0;;;7723:14;7924:13;;;:6;:13;;;;;;;;:15;;;;;;;;;7873:77;;5301:66;7873:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7873:77:0;;;;;7863:88;;;;;;7764:202;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7764:202:0;;;;;;7740:237;;;;;;;;;8015:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7723:14;;7924:15;8015:26;;;;;-1:-1:-1;;8015:26:0;;;;;;;;;;7924:15;8015:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8015:26:0;;-1:-1:-1;;8015:26:0;;;-1:-1:-1;;;;;;;8060:30:0;;;;;;:59;;;8114:5;-1:-1:-1;;;;;8094:25:0;:16;-1:-1:-1;;;;;8094:25:0;;8060:59;8052:99;;;;;-1:-1:-1;;;8052:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8162:31;8171:5;8178:7;8187:5;8162:8;:31::i;:::-;7523:678;;;;;;;;;:::o;5043:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;22307:221::-;12537:8;;12549:1;12537:13;12529:42;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;-1:-1:-1;;;12529:42:0;;;;;;;;;;;;;;;12593:1;12582:8;:12;22377:6;;22370:39;;;-1:-1:-1;;;22370:39:0;;22403:4;22370:39;;;;;;22348:172;;-1:-1:-1;;;;;22377:6:0;;22370:24;;:39;;;;;;;;;;;;;;22377:6;22370:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22370:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22370:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22370:39:0;22431:6;;22424:39;;;-1:-1:-1;;;22424:39:0;;22457:4;22424:39;;;;;;-1:-1:-1;;;;;22431:6:0;;;;22424:24;;:39;;;;;22370;;22424;;;;;;;;22431:6;22424:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22424:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22424:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22424:39:0;22478:8;;-1:-1:-1;;;;;22478:8:0;;;;-1:-1:-1;;;22501:8:0;;;22348:7;:172::i;:::-;12628:1;12617:8;:12;22307:221::o;12966:384::-;11870:34;;;;;;;;;;;;;;;;;13145:43;;-1:-1:-1;;;;;13145:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13145:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;13145:43:0;179:29:-1;160:49;;13120:79:0;;;;13085:12;;13099:17;;13120:10;;;13145:43;13120:79;;;25:18:-1;13120:79:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13120:79:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13084:115:0;;;;13232:7;:57;;;;-1:-1:-1;13244:11:0;;:16;;:44;;;13275:4;13264:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13264:24:0;13244:44;13210:132;;;;;-1:-1:-1;;;13210:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12966:384;;;;;:::o;4508:142::-;4560:6;4587;;;:30;;-1:-1:-1;;4602:5:0;;;4616:1;4611;4602:5;4611:1;4597:15;;;;;:20;4587:30;4579:63;;;;;-1:-1:-1;;;4579:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4371:129;4455:5;;;4450:16;;;;4442:50;;;;;-1:-1:-1;;;4442:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14245:1019;-1:-1:-1;;;;;14420:23:0;;;;;:50;;-1:-1:-1;;;;;;14447:23:0;;;14420:50;14398:118;;;;;-1:-1:-1;;;14398:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14631:18;;14558:23;:15;:23;;;-1:-1:-1;;;14631:18:0;;;;14614:35;;;14687:15;;;;;;:33;;-1:-1:-1;;;;;;14706:14:0;;;;14687:33;:51;;;;-1:-1:-1;;;;;;14724:14:0;;;;14687:51;14683:410;;;14930:11;14857:84;;14865:44;14899:9;14865:27;14882:9;14865:16;:27::i;:::-;-1:-1:-1;;;;;14865:33:0;;:44;:33;:44;:::i;:::-;14816:20;:125;;-1:-1:-1;;;;;14857:53:0;;;;:84;;;;14816:125;;;14997:84;;;15005:44;15039:9;15005:27;15022:9;15005:16;:27::i;:44::-;14956:20;:125;;-1:-1:-1;;;;;14997:53:0;;;;:84;;;;14956:125;;;14683:410;15103:8;:28;;-1:-1:-1;;15103:28:0;-1:-1:-1;;;;;15103:28:0;;;;;;;15142;;-1:-1:-1;;;15142:28:0;;;;;;;;;-1:-1:-1;;;;;15181:35:0;-1:-1:-1;;;15181:35:0;;;;;;;;;15232:24;;;15237:8;;;15232:24;;15247:8;;;;;;;15232:24;;;;;;;;;;;;;;;;;14245:1019;;;;;;:::o;6489:172::-;-1:-1:-1;;;;;6573:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6622:31;;;;;;;;;;;;;;;;;6489:172;;;:::o;6669:223::-;-1:-1:-1;;;;;6766:15:0;;;;;;:9;:15;;;;;;:26;;6786:5;6766:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6748:15:0;;;;;;;:9;:15;;;;;;:44;;;;6819:13;;;;;;;:24;;6837:5;6819:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6803:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;6859:25;;;;;;;6803:13;;6859:25;;;;;;;;;;;;;6669:223;;;:::o;15354:904::-;15445:10;15473:13;15506:7;;;;;;;;;-1:-1:-1;;;;;15506:7:0;-1:-1:-1;;;;;15489:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15489:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15489:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15489:33:0;15588:5;;-1:-1:-1;;;;;15541:19:0;;;;;;-1:-1:-1;15489:33:0;;-1:-1:-1;15588:5:0;15619:632;;15649:11;;15645:536;;15681:13;15697:44;15707:33;-1:-1:-1;;;;;15707:18:0;;;;:33;;;:22;:33;:::i;15697:44::-;15681:60;;15760:17;15780;15790:6;15780:9;:17::i;:::-;15760:37;;15828:9;15820:5;:17;15816:350;;;15862:17;15882:37;15898:20;:5;15908:9;15898:20;:9;:20;:::i;:::-;15882:11;;;:37;:15;:37;:::i;:::-;15862:57;-1:-1:-1;15942:19:0;15964:51;16005:9;15989:10;15965:21;:5;15975:10;15965:21;:9;:21;:::i;:::-;:34;;;;;;;15964:51;:40;:51;:::i;:::-;15942:73;;16038:17;16070:11;16058:9;:23;;;;;;;-1:-1:-1;16108:13:0;;16104:42;;16123:23;16129:5;16136:9;16123:5;:23::i;:::-;15816:350;;;;15645:536;;;15619:632;;;16202:11;;16198:53;;16238:1;16230:5;:9;16198:53;15354:904;;;;;;:::o;8577:303::-;8622:6;8649:1;8645;:5;8641:232;;;-1:-1:-1;8671:1:0;8704;8700;8696:5;;:9;8720:92;8731:1;8727;:5;8720:92;;;8757:1;8753:5;;8795:1;8790;8786;8782;:5;;;;;;:9;8781:15;;;;;;8777:19;;8720:92;;;8641:232;;;;8833:6;;8829:44;;-1:-1:-1;8860:1:0;8829:44;8577:303;;;:::o;6057:204::-;6133:11;;:22;;6149:5;6133:22;:15;:22;:::i;:::-;6119:11;:36;;;-1:-1:-1;;;;;6182:13:0;;;;:9;:13;;;;;;:24;;6200:5;6182:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6166:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6222:31;;;;;;;6166:13;;;;6222:31;;;;;;;;;;6057:204;;:::o;8363:96::-;8415:6;8442:1;8438;:5;:13;;8450:1;8438:13;;;8446:1;8438:13;8434:17;8363:96;-1:-1:-1;;;8363:96:0:o;6269:212::-;-1:-1:-1;;;;;6351:15:0;;;;;;:9;:15;;;;;;:26;;6371:5;6351:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6333:15:0;;;;;;:9;:15;;;;;:44;;;;6402:11;:22;;6418:5;6402:22;:15;:22;:::i;:::-;6388:11;:36;;;6440:33;;;;;;;;-1:-1:-1;;;;;6440:33:0;;;;;;;;;;;;;6269:212;;:::o;9238:120::-;-1:-1:-1;;;;;9314:10:0;-1:-1:-1;;;9314:17:0;;9238:120::o;9429:108::-;9489:9;-1:-1:-1;;;;;9519:10:0;;-1:-1:-1;;;;;9515:14:0;;9519:10;9515:14;;;;;;9429:108;-1:-1:-1;;;9429:108:0:o;4235:128::-;4319:5;;;4314:16;;;;4306:49;;;;;-1:-1:-1;;;4306:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://13c88bfc04366e18194b3df75486edef14c097529764cab7c9dc21622f431afd
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.