ETH Price: $3,299.28 (-3.30%)
Gas: 17 Gwei

Token

Baby Lonely Alien Space Club (BLASC)
 

Overview

Max Total Supply

10,000 BLASC

Holders

75

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
94.741546223267918769 BLASC

Value
$0.00
0xcba1d08dec5eeca6573fd692037f483c97939716
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BLASC

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : BLASC.sol
//SPDX-License-Identifier: GPL-3.0-or-later

//  __________       ___.           .____       _____    __________________
//  \______   \_____ \_ |__ ___.__. |    |     /  _  \  /   _____/\_   ___ \
//  |    |  _/\__  \ | __ <   |  | |    |    /  /_\  \ \_____  \ /    \  \/
//  |    |   \ / __ \| \_\ \___  | |    |___/    |    \/        \\     \____
//  |______  /(____  /___  / ____| |_______ \____|__  /_______  / \______  /
//  \/      \/    \/\/              \/       \/        \/         \/

pragma solidity ^0.6.12;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
    * @dev Returns the amount of tokens in existence.
    */
    function totalSupply() external view returns (uint256);

    /**
    * @dev Returns the amount of tokens owned by `account`.
    */
    function balanceOf(address account) external view returns (uint256);

    /**
    * @dev Moves `amount` tokens from the caller's account to `recipient`.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
    * @dev Returns the remaining number of tokens that `spender` will be
    * allowed to spend on behalf of `owner` through {transferFrom}. This is
    * zero by default.
    *
    * This value changes when {approve} or {transferFrom} are called.
    */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
    * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * IMPORTANT: Beware that changing an allowance with this method brings the risk
    * that someone may use both the old and the new allowance by unfortunate
    * transaction ordering. One possible solution to mitigate this race
    * condition is to first reduce the spender's allowance to 0 and set the
    * desired value afterwards:
    * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    *
    * Emits an {Approval} event.
    */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
    * @dev Moves `amount` tokens from `sender` to `recipient` using the
    * allowance mechanism. `amount` is then deducted from the caller's
    * allowance.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
    * @dev Emitted when `value` tokens are moved from one account (`from`) to
    * another (`to`).
    *
    * Note that `value` may be zero.
    */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
    * @dev Emitted when the allowance of a `spender` for an `owner` is set by
    * a call to {approve}. `value` is the new allowance.
    */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
    * @dev Returns the addition of two unsigned integers, reverting on
    * overflow.
    *
    * Counterpart to Solidity's `+` operator.
    *
    * Requirements:
    *
    * - Addition cannot overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
    * @dev Returns the subtraction of two unsigned integers, reverting on
    * overflow (when the result is negative).
    *
    * Counterpart to Solidity's `-` operator.
    *
    * Requirements:
    *
    * - Subtraction cannot overflow.
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
    * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
    * overflow (when the result is negative).
    *
    * Counterpart to Solidity's `-` operator.
    *
    * Requirements:
    *
    * - Subtraction cannot overflow.
    */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Returns the multiplication of two unsigned integers, reverting on
    * overflow.
    *
    * Counterpart to Solidity's `*` operator.
    *
    * Requirements:
    *
    * - Multiplication cannot overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
    * @dev Returns the integer division of two unsigned integers. Reverts on
    * division by zero. The result is rounded towards zero.
    *
    * Counterpart to Solidity's `/` operator. Note: this function uses a
    * `revert` opcode (which leaves remaining gas untouched) while Solidity
    * uses an invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
    * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
    * division by zero. The result is rounded towards zero.
    *
    * Counterpart to Solidity's `/` operator. Note: this function uses a
    * `revert` opcode (which leaves remaining gas untouched) while Solidity
    * uses an invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
    * Reverts when dividing by zero.
    *
    * Counterpart to Solidity's `%` operator. This function uses a `revert`
    * opcode (which leaves remaining gas untouched) while Solidity uses an
    * invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
    * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
    * Reverts with custom message when dividing by zero.
    *
    * Counterpart to Solidity's `%` operator. This function uses a `revert`
    * opcode (which leaves remaining gas untouched) while Solidity uses an
    * invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    /**
    * @dev Returns true if `account` is a contract.
    *
    * [IMPORTANT]
    * ====
    * It is unsafe to assume that an address for which this function returns
    * false is an externally-owned account (EOA) and not a contract.
    *
    * Among others, `isContract` will return false for the following
    * types of addresses:
    *
    *  - an externally-owned account
    *  - a contract in construction
    *  - an address where a contract will be created
    *  - an address where a contract lived, but was destroyed
    * ====
    */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
    * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
    * `recipient`, forwarding all available gas and reverting on errors.
    *
    * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
    * of certain opcodes, possibly making contracts go over the 2300 gas limit
    * imposed by `transfer`, making them unable to receive funds via
    * `transfer`. {sendValue} removes this limitation.
    *
    * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
    *
    * IMPORTANT: because control is transferred to `recipient`, care must be
    * taken to not create reentrancy vulnerabilities. Consider using
    * {ReentrancyGuard} or the
    * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
    */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
    * @dev Performs a Solidity function call using a low level `call`. A
    * plain`call` is an unsafe replacement for a function call: use this
    * function instead.
    *
    * If `target` reverts with a revert reason, it is bubbled up by this
    * function (like regular Solidity function calls).
    *
    * Returns the raw returned data. To convert to the expected return value,
    * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
    *
    * Requirements:
    *
    * - `target` must be a contract.
    * - calling `target` with `data` must not revert.
    *
    * _Available since v3.1._
    */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
    * `errorMessage` as a fallback revert reason when `target` reverts.
    *
    * _Available since v3.1._
    */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
    * but also transferring `value` wei to `target`.
    *
    * Requirements:
    *
    * - the calling contract must have an ETH balance of at least `value`.
    * - the called Solidity function must be `payable`.
    *
    * _Available since v3.1._
    */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
    * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
    * with `errorMessage` as a fallback revert reason when `target` reverts.
    *
    * _Available since v3.1._
    */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
    * @dev Initializes the contract setting the deployer as the initial owner.
    */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
    * @dev Returns the address of the current owner.
    */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
    * @dev Leaves the contract without owner. It will not be possible to call
    * `onlyOwner` functions anymore. Can only be called by the current owner.
    *
    * NOTE: Renouncing ownership will leave the contract without an owner,
    * thereby removing any functionality that is only available to the owner.
    */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
    * @dev Transfers ownership of the contract to a new account (`newOwner`).
    * Can only be called by the current owner.
    */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(now > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
}
// Contract implementation
contract BLASC is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded; // excluded from reward
    address[] private _excluded;
    mapping (address => bool) private _isBlackListedBot;
    address[] private _blackListedBots;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 10_000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = 'Baby Lonely Alien Space Club';
    string private _symbol = 'BLASC';
    uint8 private _decimals = 18;

    uint256 private _taxFee = 10;
    uint256 private _nftFee = 55;
    uint256 private _marketingFee = 20;

    uint256 private _swapImpact = 10;

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousNftFee = _nftFee;
    uint256 private _previousMarketingFee = _marketingFee;

    address payable public _nftWalletAddress = payable(0xAe89a842F77546f22357a7290E49566F93A3f9C3);
    address payable public _marketingWalletAddress = payable(0x13ff7906c023FeAeEC81343A75243633aEdE2704);

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify = false;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;

    uint256 private _maxTxAmount = _tTotal.div(200);

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        // Exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_nftWalletAddress] = true;
        _isExcludedFromFee[_marketingWalletAddress] = true;

        _isBlackListedBot[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true;
        _blackListedBots.push(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b));

        _isBlackListedBot[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true;
        _blackListedBots.push(address(0x27F9Adb26D532a41D97e00206114e429ad58c679));

        _isBlackListedBot[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true;
        _blackListedBots.push(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7));

        _isBlackListedBot[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true;
        _blackListedBots.push(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533));

        _isBlackListedBot[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true;
        _blackListedBots.push(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F));

        _isBlackListedBot[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true;
        _blackListedBots.push(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7));

        _isBlackListedBot[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true;
        _blackListedBots.push(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5));

        _isBlackListedBot[address(0xf1CA09CE745bfa38258b26cd839ef0E8DE062A40)] = true;
        _blackListedBots.push(address(0xf1CA09CE745bfa38258b26cd839ef0E8DE062A40));

        _isBlackListedBot[address(0x8719c2829944150F59E3428CA24f6Fc018E43890)] = true;
        _blackListedBots.push(address(0x8719c2829944150F59E3428CA24f6Fc018E43890));

        _isBlackListedBot[address(0xa8E0771582EA33A9d8e6d2Ccb65A8D10Bd0Ea517)] = true;
        _blackListedBots.push(address(0xa8E0771582EA33A9d8e6d2Ccb65A8D10Bd0Ea517));

        _isBlackListedBot[address(0xF3DaA7465273587aec8b2d2706335e06068ccce4)] = true;
        _blackListedBots.push(address(0xF3DaA7465273587aec8b2d2706335e06068ccce4));

        _isBlackListedBot[address(0x9272A2c7083Da2B1C2F0739d9655D1A09764DEAD)] = true;
        _blackListedBots.push(address(0x9272A2c7083Da2B1C2F0739d9655D1A09764DEAD));

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

        function addBotToBlackList(address account) external onlyOwner() {
            require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.');
            require(!_isBlackListedBot[account], "Account is already blacklisted");
            _isBlackListedBot[account] = true;
            _blackListedBots.push(account);
        }

        function removeBotFromBlackList(address account) external onlyOwner() {
            require(_isBlackListedBot[account], "Account is not blacklisted");
            for (uint256 i = 0; i < _blackListedBots.length; i++) {
                if (_blackListedBots[i] == account) {
                    _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                    _isBlackListedBot[account] = false;
                    _blackListedBots.pop();
                    break;
                }
            }
        }

    function removeAllFee() private {
        if(_taxFee == 0 && _nftFee == 0 && _marketingFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousNftFee = _nftFee;
        _previousMarketingFee = _marketingFee;

        _taxFee = 0;
        _nftFee = 0;
        _marketingFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _marketingFee = _previousMarketingFee;
        _nftFee = _previousMarketingFee;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlackListedBot[sender], "You have no power here!");
        require(!_isBlackListedBot[recipient], "You have no power here!");
        require(!_isBlackListedBot[tx.origin], "You have no power here!");

        if(sender != owner() && recipient != owner()) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            // sorry about that, but sniper bots nowadays are buying multiple times, hope I have something more robust to prevent them to nuke the launch :-(
            if (sender == uniswapV2Pair) {
                require(tradingOpen, "Wait for opened trading");
                require(balanceOf(recipient) <= _maxTxAmount, "Already bought maxTxAmount, wait till check off");
                require(balanceOf(tx.origin) <= _maxTxAmount, "Already bought maxTxAmount, wait till check off");
            }

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap + liquidity lock?
            // also, don't get caught in a circular liquidity event.
            // also, don't swap & liquify if sender is uniswap pair.

            if (!inSwapAndLiquify && swapAndLiquifyEnabled && sender != uniswapV2Pair) {
                swapTokens(amount, recipient == uniswapV2Pair);
            }
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        //transfer amount, it will take tax and eth fee
        _tokenTransfer(sender,recipient,amount,takeFee);
    }

    event SwapAndLiquifyFailed(bytes failErr);

    function swapTokens(uint256 amount, bool isSell) private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 maxAddedToSlipPage = amount.mul(_swapImpact).div(100);
        if (isSell && contractTokenBalance > maxAddedToSlipPage) {
            contractTokenBalance = maxAddedToSlipPage;
        }
        swapTokensForEth(contractTokenBalance);
        sendETHToWallets(address(this).balance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        ) {
            emit SwapTokensForETH(tokenAmount, path);
        } catch (bytes memory e) {
            emit SwapAndLiquifyFailed(e);
        }
    }

    function sendETHToWallets(uint256 amount) private {
        uint256 fees = _marketingFee.add(_nftFee);
        uint256 marketing = amount.mul(_marketingFee).div(fees);
        _marketingWalletAddress.transfer(marketing);
        _nftWalletAddress.transfer(amount.sub(marketing));
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

    // We are exposing these functions to be able to manual swap and send
    // in case the token is highly valued and 5M becomes too much
    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSwapAmount(uint256 amount) public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        require(contractBalance >= amount , 'contract balance should be greater then amount');

        swapTokensForEth(amount);
    }

    function manualSend() public onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToWallets(contractETHBalance);
    }

    function manualSwapAndSend(uint256 amount) external onlyOwner() {
        manualSwapAmount(amount);
        manualSend();
    }

    function setSwapAndLiquifyEnabled(bool _swapAndLiquifyEnabled) external onlyOwner(){
        swapAndLiquifyEnabled = _swapAndLiquifyEnabled;
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllEthFees(tNftMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllEthFees(tNftMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllEthFees(tNftMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllEthFees(tNftMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeAllEthFees(uint256 tNftMarketing) private {
        uint256 currentRate =  _getRate();
        uint256 rNftMarketing = tNftMarketing.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rNftMarketing);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tNftMarketing);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    //to recieve ETH from uniswapV2Router when swapping
    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tNftMarketing);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tNftMarketing);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(_taxFee).div(1000);
        uint256 tNftMarketing = tAmount.mul(_marketingFee.add(_nftFee)).div(1000);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tNftMarketing);
        return (tTransferAmount, tFee, tNftMarketing);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tNftMarketing) private view returns (uint256, uint256, uint256) {
        uint256 currentRate = _getRate();
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        // thanks myobu for finding bug here, now everybody need to deploy new contracts lmao..
        uint256 rNftMarketing = tNftMarketing.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rNftMarketing);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() private view returns(uint256) {
        return _maxTxAmount;
    }

    function _getETHBalance() public view returns(uint256 balance) {
        return address(this).balance;
    }

    function _setTaxFee(uint256 taxFee) external onlyOwner() {
        require(taxFee >= 0 && taxFee <= 490, 'taxFee should be in 0 - 490');
        _taxFee = taxFee;
    }

    function _setMarketingFee(uint256 marketingFee) external onlyOwner() {
        require(marketingFee >= 0 && marketingFee <= 490, 'marketingFee should be in 0 - 490');
        _marketingFee = marketingFee;
    }

    function _setNftFee(uint256 nftFee) external onlyOwner() {
        require(nftFee >= 0 && nftFee <= 490, 'nftFee should be in 0 - 490');
        _nftFee = nftFee;
    }

    function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() {
        _marketingWalletAddress = marketingWalletAddress;
    }

    function _setSwapImpact(uint256 swapImpact) external onlyOwner() {
        _swapImpact = swapImpact;
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 10**9 , 'maxTxAmount should be greater than total 1e9');
        _maxTxAmount = maxTxAmount;
    }

    function recoverTokens(uint256 tokenAmount) public virtual onlyOwner() {
        _approve(address(this), owner(), tokenAmount);
        _transfer(address(this), owner(), tokenAmount);
    }
}

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

Contract Security Audit

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"failErr","type":"bytes"}],"name":"SwapAndLiquifyFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nftWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftFee","type":"uint256"}],"name":"_setNftFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapImpact","type":"uint256"}],"name":"_setSwapImpact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

69021e19e0c9bab2400000600b55690200b25812c4f53fffff19600c55610100604052601c60c08190527f42616279204c6f6e656c7920416c69656e20537061636520436c75620000000060e09081526200005e91600e919062000938565b5060408051808201909152600580825264424c41534360d81b60209092019182526200008d91600f9162000938565b5060108054601260ff199091168117909155600a6011819055603791829055601460138190558181556015919091556016919091556017556018805473ae89a842f77546f22357a7290e49566f93a3f9c36001600160a01b03199182161790915560198054600160a81b7313ff7906c023feaeec81343a75243633aede2704919093161761ffff60a01b19169190911760ff60b01b19169055600b54620001429060c86200082d602090811b6200214817901c565b601a553480156200015257600080fd5b5060006200015f6200087e565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c5460036000620001ba6200087e565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023157600080fd5b505afa15801562000246573d6000803e3d6000fd5b505050506040513d60208110156200025d57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620002ae57600080fd5b505afa158015620002c3573d6000803e3d6000fd5b505050506040513d6020811015620002da57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200032d57600080fd5b505af115801562000342573d6000803e3d6000fd5b505050506040513d60208110156200035957600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600660006200038662000882565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600684528281208054861660019081179091556018548316825283822080548716821790556019549092168152918220805485168217905560099092527f404b5b762e8059f6055e90a7bf5e88e1e2f628911a8da7857df40bf26352e2128054841683179055600a805480840182557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890810180546001600160a01b031990811673a1cec245c456dd1bd9f2815a6955fef44eb4191b179091557f82951a08c86bbc382122443ed556bc8073b7e0bdf3bbfb811f503389aad35bfc8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557f3ee2bfab112ce489483443731da982ac406a17d09137224e74d494a6037142ad805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557fb7baecc9aa863a1182bccd59d3b8aaee484658aee9400a94283dad2dbafd9d1d80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557fab5495752a9187414227aebaa8b39a4bffdb32802987cba6aff3f20498292a7180548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f942ebcb2565846ab429e313119fc37882c100e43cc02a57b5525c115ad4f72998054871686179055825480860184558201805482167359341bc6b4f3ace878574b05914f43309dd678c71790557f11c8caefcbc9afecd5b2153811f415fe306a1f3884466a0ddf30ba3939464b1e80548716861790558254808601845582018054821673136f4b5b6a306091b280e3f251fa0e21b1280cd51790557f5285ca56d5238f5cab5f1f0e88c2f05725198ebf90836644148c3ad2ae4350dd80548716861790558254808601845582018054821673f1ca09ce745bfa38258b26cd839ef0e8de062a401790557f63311b9fe935901487e2709d823f9feaee35256550ebb1a20dea871df42b7600805487168617905582548086018455820180548216738719c2829944150f59e3428ca24f6fc018e438901790557ff1094c410968a21d81ae0bddb783a54ddd1d40925fb4944787cb37532e24c12380548716861790558254808601845582018054821673a8e0771582ea33a9d8e6d2ccb65a8d10bd0ea5171790557f1b4ff325b507f000c86886ba6b3c0ac86d817073e665a7d9d453685df186721280548716861790558254808601845582018054821673f3daa7465273587aec8b2d2706335e06068ccce41790557f14636460c0484814d76a12b4eef4c00c0ddcb351e422a21849209003359fc5fa80549096168517909555815493840182559152018054909116739272a2c7083da2b1c2f0739d9655d1a09764dead179055620007d96200087e565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a350620009d4565b60006200087783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089160201b60201c565b9392505050565b3390565b6000546001600160a01b031690565b60008183620009215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620008e5578181015183820152602001620008cb565b50505050905090810190601f168015620009135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200092e57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200097b57805160ff1916838001178555620009ab565b82800160010185558215620009ab579182015b82811115620009ab5782518255916020019190600101906200098e565b50620009b9929150620009bd565b5090565b5b80821115620009b95760008155600101620009be565b60805160601c60a05160601c61389762000a1c600039806113c5528061250352806126575280612697525080610b51528061291952806129d152806129f852506138976000f3fe6080604052600436106102975760003560e01c806370a082311161015a578063af9549e0116100c1578063dd4670641161007a578063dd467064146109be578063dd62ed3e146109e8578063f2fde38b14610a23578063f429389014610a56578063f815a84214610a6b578063ffb54a9914610a805761029e565b8063af9549e0146108ee578063b6c5232414610929578063bbbfab1f1461093e578063c49b9a8014610953578063c9567bf91461097f578063c994c4b9146109945761029e565b806395d89b411161011357806395d89b41146107fe5780639a02ecd514610813578063a457c2d71461083d578063a52fe9bb14610876578063a69df4b5146108a0578063a9059cbb146108b55761029e565b806370a0823114610711578063715018a6146107445780637ded4d6a1461075957806388e0853e1461078c57806388f82020146107b65780638da5cb5b146107e95761029e565b806339509351116101fe57806349bd5a5e116101b757806349bd5a5e146106425780634a74bb021461065757806351bc3c851461066c57806352390c02146106815780635342acb4146106b45780635880b873146106e75761029e565b8063395093511461053b5780633bd5d173146105745780634144d9e41461059e5780634303443d146105b35780634549b039146105e6578063474fe03f146106185761029e565b80631ff53b60116102505780631ff53b601461041357806323b872dd146104465780632d8381191461048957806330599fc5146104b3578063313ce567146104dd5780633685d419146105085761029e565b806306fdde03146102a3578063095ea7b31461032d57806313114a9d1461037a5780631694505e146103a157806318160ddd146103d25780631bbae6e0146103e75761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610a95565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f25781810151838201526020016102da565b50505050905090810190601f16801561031f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033957600080fd5b506103666004803603604081101561035057600080fd5b506001600160a01b038135169060200135610b2b565b604080519115158252519081900360200190f35b34801561038657600080fd5b5061038f610b49565b60408051918252519081900360200190f35b3480156103ad57600080fd5b506103b6610b4f565b604080516001600160a01b039092168252519081900360200190f35b3480156103de57600080fd5b5061038f610b73565b3480156103f357600080fd5b506104116004803603602081101561040a57600080fd5b5035610b79565b005b34801561041f57600080fd5b506104116004803603602081101561043657600080fd5b50356001600160a01b0316610c19565b34801561045257600080fd5b506103666004803603606081101561046957600080fd5b506001600160a01b03813581169160208101359091169060400135610c93565b34801561049557600080fd5b5061038f600480360360208110156104ac57600080fd5b5035610d1a565b3480156104bf57600080fd5b50610411600480360360208110156104d657600080fd5b5035610d7c565b3480156104e957600080fd5b506104f2610dfb565b6040805160ff9092168252519081900360200190f35b34801561051457600080fd5b506104116004803603602081101561052b57600080fd5b50356001600160a01b0316610e04565b34801561054757600080fd5b506103666004803603604081101561055e57600080fd5b506001600160a01b038135169060200135610fc5565b34801561058057600080fd5b506104116004803603602081101561059757600080fd5b5035611013565b3480156105aa57600080fd5b506103b66110ed565b3480156105bf57600080fd5b50610411600480360360208110156105d657600080fd5b50356001600160a01b03166110fc565b3480156105f257600080fd5b5061038f6004803603604081101561060957600080fd5b50803590602001351515611284565b34801561062457600080fd5b506104116004803603602081101561063b57600080fd5b5035611316565b34801561064e57600080fd5b506103b66113c3565b34801561066357600080fd5b506103666113e7565b34801561067857600080fd5b506104116113f7565b34801561068d57600080fd5b50610411600480360360208110156106a457600080fd5b50356001600160a01b0316611465565b3480156106c057600080fd5b50610366600480360360208110156106d757600080fd5b50356001600160a01b0316611647565b3480156106f357600080fd5b506104116004803603602081101561070a57600080fd5b5035611665565b34801561071d57600080fd5b5061038f6004803603602081101561073457600080fd5b50356001600160a01b0316611719565b34801561075057600080fd5b5061041161177b565b34801561076557600080fd5b506104116004803603602081101561077c57600080fd5b50356001600160a01b031661180b565b34801561079857600080fd5b50610411600480360360208110156107af57600080fd5b5035611998565b3480156107c257600080fd5b50610366600480360360208110156107d957600080fd5b50356001600160a01b0316611a01565b3480156107f557600080fd5b506103b6611a1f565b34801561080a57600080fd5b506102b8611a2e565b34801561081f57600080fd5b506104116004803603602081101561083657600080fd5b5035611a8f565b34801561084957600080fd5b506103666004803603604081101561086057600080fd5b506001600160a01b038135169060200135611aec565b34801561088257600080fd5b506104116004803603602081101561089957600080fd5b5035611b54565b3480156108ac57600080fd5b50610411611bf2565b3480156108c157600080fd5b50610366600480360360408110156108d857600080fd5b506001600160a01b038135169060200135611ce0565b3480156108fa57600080fd5b506104116004803603604081101561091157600080fd5b506001600160a01b0381351690602001351515611cf4565b34801561093557600080fd5b5061038f611d77565b34801561094a57600080fd5b506103b6611d7d565b34801561095f57600080fd5b506104116004803603602081101561097657600080fd5b50351515611d8c565b34801561098b57600080fd5b50610411611e02565b3480156109a057600080fd5b50610411600480360360208110156109b757600080fd5b5035611e6f565b3480156109ca57600080fd5b50610411600480360360208110156109e157600080fd5b5035611f23565b3480156109f457600080fd5b5061038f60048036036040811015610a0b57600080fd5b506001600160a01b0381358116916020013516611fc1565b348015610a2f57600080fd5b5061041160048036036020811015610a4657600080fd5b50356001600160a01b0316611fec565b348015610a6257600080fd5b506104116120d2565b348015610a7757600080fd5b5061038f612134565b348015610a8c57600080fd5b50610366612138565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b6000610b3f610b38612191565b8484612195565b5060015b92915050565b600d5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5490565b610b81612191565b6000546001600160a01b03908116911614610bd1576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b633b9aca00811015610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180613660602c913960400191505060405180910390fd5b601a55565b610c21612191565b6000546001600160a01b03908116911614610c71576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ca0848484612281565b610d1084610cac612191565b610d0b856040518060600160405280602881526020016136ad602891396001600160a01b038a16600090815260056020526040812090610cea612191565b6001600160a01b03168152602081019190915260400160002054919061272c565b612195565b5060019392505050565b6000600c54821115610d5d5760405162461bcd60e51b815260040180806020018281038252602a815260200180613597602a913960400191505060405180910390fd5b6000610d676127c3565b9050610d738382612148565b9150505b919050565b610d84612191565b6000546001600160a01b03908116911614610dd4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b610de630610de0611a1f565b83612195565b610df830610df2611a1f565b83612281565b50565b60105460ff1690565b610e0c612191565b6000546001600160a01b03908116911614610e5c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610ec9576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610fc157816001600160a01b031660088281548110610eed57fe5b6000918252602090912001546001600160a01b03161415610fb957600880546000198101908110610f1a57fe5b600091825260209091200154600880546001600160a01b039092169183908110610f4057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610f9257fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610fc1565b600101610ecc565b5050565b6000610b3f610fd2612191565b84610d0b8560056000610fe3612191565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906127e6565b600061101d612191565b6001600160a01b03811660009081526007602052604090205490915060ff16156110785760405162461bcd60e51b815260040180806020018281038252602c8152602001806137ee602c913960400191505060405180910390fd5b600061108383612840565b505050506001600160a01b0384166000908152600360205260409020549192506110af91905082612887565b6001600160a01b038316600090815260036020526040902055600c546110d59082612887565b600c55600d546110e590846127e6565b600d55505050565b6019546001600160a01b031681565b611104612191565b6000546001600160a01b03908116911614611154576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111b05760405162461bcd60e51b815260040180806020018281038252602481526020018061373e6024913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff161561121e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600b548311156112dd576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816112fc5760006112ed84612840565b50939550610b43945050505050565b600061130784612840565b50929550610b43945050505050565b61131e612191565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061137930611719565b9050818110156113ba5760405162461bcd60e51b815260040180806020018281038252602e815260200180613569602e913960400191505060405180910390fd5b610fc1826128c9565b7f000000000000000000000000000000000000000000000000000000000000000081565b601954600160a81b900460ff1681565b6113ff612191565b6000546001600160a01b0390811691161461144f576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061145a30611719565b9050610df8816128c9565b61146d612191565b6000546001600160a01b039081169116146114bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156115195760405162461bcd60e51b81526004018080602001828103825260228152602001806137cc6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611587576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156115e1576001600160a01b0381166000908152600360205260409020546115c790610d1a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b61166d612191565b6000546001600160a01b039081169116146116bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611714576040805162461bcd60e51b815260206004820152601b60248201527f7461784665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601155565b6001600160a01b03811660009081526007602052604081205460ff161561175957506001600160a01b038116600090815260046020526040902054610d77565b6001600160a01b038216600090815260036020526040902054610b4390610d1a565b611783612191565b6000546001600160a01b039081169116146117d3576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116906000805160206136f5833981519152908390a3600080546001600160a01b0319169055565b611813612191565b6000546001600160a01b03908116911614611863576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166118d0576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015610fc157816001600160a01b0316600a82815481106118f457fe5b6000918252602090912001546001600160a01b0316141561199057600a8054600019810190811061192157fe5b600091825260209091200154600a80546001600160a01b03909216918390811061194757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a805480610f9257fe5b6001016118d3565b6119a0612191565b6000546001600160a01b039081169116146119f0576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6119f981611316565b610df86120d2565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b611a97612191565b6000546001600160a01b03908116911614611ae7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601455565b6000610b3f611af9612191565b84610d0b8560405180606001604052806025815260200161383d6025913960056000611b23612191565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061272c565b611b5c612191565b6000546001600160a01b03908116911614611bac576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611bed5760405162461bcd60e51b81526004018080602001828103825260218152602001806137876021913960400191505060405180910390fd5b601355565b6001546001600160a01b03163314611c3b5760405162461bcd60e51b815260040180806020018281038252602381526020018061381a6023913960400191505060405180910390fd5b6002544211611c91576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116916000805160206136f583398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b3f611ced612191565b8484612281565b611cfc612191565b6000546001600160a01b03908116911614611d4c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b6018546001600160a01b031681565b611d94612191565b6000546001600160a01b03908116911614611de4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60198054911515600160a81b0260ff60a81b19909216919091179055565b611e0a612191565b6000546001600160a01b03908116911614611e5a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6019805460ff60b01b1916600160b01b179055565b611e77612191565b6000546001600160a01b03908116911614611ec7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611f1e576040805162461bcd60e51b815260206004820152601b60248201527f6e66744665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601255565b611f2b612191565b6000546001600160a01b03908116911614611f7b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181906000805160206136f5833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611ff4612191565b6000546001600160a01b03908116911614612044576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b0381166120895760405162461bcd60e51b81526004018080602001828103825260268152602001806135c16026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206136f583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6120da612191565b6000546001600160a01b0390811691161461212a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b47610df881612c29565b4790565b601954600160b01b900460ff1681565b600061218a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ce2565b9392505050565b3390565b6001600160a01b0383166121da5760405162461bcd60e51b81526004018080602001828103825260248152602001806137a86024913960400191505060405180910390fd5b6001600160a01b03821661221f5760405162461bcd60e51b81526004018080602001828103825260228152602001806135e76022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122c65760405162461bcd60e51b81526004018080602001828103825260258152602001806137626025913960400191505060405180910390fd5b6001600160a01b03821661230b5760405162461bcd60e51b81526004018080602001828103825260238152602001806135466023913960400191505060405180910390fd5b6000811161234a5760405162461bcd60e51b81526004018080602001828103825260298152602001806137156029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156123b2576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b03821660009081526009602052604090205460ff161561241a576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615612479576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b612481611a1f565b6001600160a01b0316836001600160a01b0316141580156124bb57506124a5611a1f565b6001600160a01b0316826001600160a01b031614155b156126cf57601a548111156125015760405162461bcd60e51b81526004018080602001828103825260288152602001806136386028913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561262b57601954600160b01b900460ff16612599576040805162461bcd60e51b815260206004820152601760248201527f5761697420666f72206f70656e65642074726164696e67000000000000000000604482015290519081900360640190fd5b601a546125a583611719565b11156125e25760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601a546125ee32611719565b111561262b5760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601954600160a01b900460ff1615801561264e5750601954600160a81b900460ff165b801561268c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156126cf576126cf817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614612d47565b6001600160a01b03831660009081526006602052604090205460019060ff168061271157506001600160a01b03831660009081526006602052604090205460ff165b1561271a575060005b61272684848484612dbf565b50505050565b600081848411156127bb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612780578181015183820152602001612768565b50505050905090810190601f1680156127ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006127d0612f2d565b90925090506127df8282612148565b9250505090565b60008282018381101561218a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006128578a613090565b925092509250600080600061286d8d8686613102565b919f909e50909c50959a5093985091965092945050505050565b600061218a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272c565b604080516002808252606080830184529260208301908036833701905050905030816000815181106128f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561297057600080fd5b505afa158015612984573d6000803e3d6000fd5b505050506040513d602081101561299a57600080fd5b50518151829060019081106129ab57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506129f6307f000000000000000000000000000000000000000000000000000000000000000084612195565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612a9b578181015183820152602001612a83565b505050509050019650505050505050600060405180830381600087803b158015612ac457600080fd5b505af1925050508015612ad5575060015b612ba8573d808015612b03576040519150601f19603f3d011682016040523d82523d6000602084013e612b08565b606091505b507fc062bf45765a468f8a8d2ac697498f1f0211f1c5ac8a9c51fad14b916351c565816040518080602001828103825283818151815260200191508051906020019080838360005b83811015612b68578181015183820152602001612b50565b50505050905090810190601f168015612b955780820380516001836020036101000a031916815260200191505b509250505060405180910390a150610fc1565b7f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612c11578181015183820152602001612bf9565b50505050905001935050505060405180910390a15050565b6000612c426012546013546127e690919063ffffffff16565b90506000612c6582612c5f6013548661315f90919063ffffffff16565b90612148565b6019546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612ca0573d6000803e3d6000fd5b506018546001600160a01b03166108fc612cba8584612887565b6040518115909202916000818181858888f19350505050158015612726573d6000803e3d6000fd5b60008183612d315760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612780578181015183820152602001612768565b506000838581612d3d57fe5b0495945050505050565b6019805460ff60a01b1916600160a01b1790556000612d6530611719565b90506000612d836064612c5f6014548761315f90919063ffffffff16565b9050828015612d9157508082115b15612d9a578091505b612da3826128c9565b612dac47612c29565b50506019805460ff60a01b191690555050565b80612dcc57612dcc6131b8565b6001600160a01b03841660009081526007602052604090205460ff168015612e0d57506001600160a01b03831660009081526007602052604090205460ff16155b15612e2257612e1d848484613201565b612f20565b6001600160a01b03841660009081526007602052604090205460ff16158015612e6357506001600160a01b03831660009081526007602052604090205460ff165b15612e7357612e1d848484613325565b6001600160a01b03841660009081526007602052604090205460ff16158015612eb557506001600160a01b03831660009081526007602052604090205460ff16155b15612ec557612e1d8484846133ce565b6001600160a01b03841660009081526007602052604090205460ff168015612f0557506001600160a01b03831660009081526007602052604090205460ff165b15612f1557612e1d848484613412565b612f208484846133ce565b8061272657612726613485565b600c54600b546000918291825b60085481101561305e57826003600060088481548110612f5657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612fbb5750816004600060088481548110612f9457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612fd257600c54600b549450945050505061308c565b6130126003600060088481548110612fe657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612887565b9250613054600460006008848154811061302857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612887565b9150600101612f3a565b50600b54600c5461306e91612148565b82101561308657600c54600b5493509350505061308c565b90925090505b9091565b6000806000806130b16103e8612c5f6011548861315f90919063ffffffff16565b905060006130dc6103e8612c5f6130d56012546013546127e690919063ffffffff16565b899061315f565b905060006130f4826130ee8986612887565b90612887565b979296509094509092505050565b6000806000806131106127c3565b9050600061311e888361315f565b9050600061312c888461315f565b9050600061313a888561315f565b9050600061314c826130ee8686612887565b939b939a50919850919650505050505050565b60008261316e57506000610b43565b8282028284828161317b57fe5b041461218a5760405162461bcd60e51b815260040180806020018281038252602181526020018061368c6021913960400191505060405180910390fd5b6011541580156131c85750601254155b80156131d45750601354155b156131de576131ff565b60118054601555601280546016556013805460175560009283905590829055555b565b60008060008060008061321387612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506132459088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546132749087612887565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546132a390866127e6565b6001600160a01b0389166000908152600360205260409020556132c581613498565b6132cf8483613521565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061333787612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506133699087612887565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461339f90846127e6565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546132a390866127e6565b6000806000806000806133e087612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132749087612887565b60008060008060008061342487612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506134569088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546133699087612887565b6015546011556017546013819055601255565b60006134a26127c3565b905060006134b0838361315f565b306000908152600360205260409020549091506134cd90826127e6565b3060009081526003602090815260408083209390935560079052205460ff161561351c573060009081526004602052604090205461350b90846127e6565b306000908152600460205260409020555b505050565b600c5461352e9083612887565b600c55600d5461353e90826127e6565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373636f6e74726163742062616c616e63652073686f756c642062652067726561746572207468656e20616d6f756e74416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373416c726561647920626f75676874206d61785478416d6f756e742c20776169742074696c6c20636865636b206f66665472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e6d61785478416d6f756e742073686f756c642062652067726561746572207468616e20746f74616c20316539536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736d61726b6574696e674665652073686f756c6420626520696e2030202d2034393045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122038753535f093f12023bfe1465b803bdcb2d2579704508ce306c0a5b4be35f15564736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c806370a082311161015a578063af9549e0116100c1578063dd4670641161007a578063dd467064146109be578063dd62ed3e146109e8578063f2fde38b14610a23578063f429389014610a56578063f815a84214610a6b578063ffb54a9914610a805761029e565b8063af9549e0146108ee578063b6c5232414610929578063bbbfab1f1461093e578063c49b9a8014610953578063c9567bf91461097f578063c994c4b9146109945761029e565b806395d89b411161011357806395d89b41146107fe5780639a02ecd514610813578063a457c2d71461083d578063a52fe9bb14610876578063a69df4b5146108a0578063a9059cbb146108b55761029e565b806370a0823114610711578063715018a6146107445780637ded4d6a1461075957806388e0853e1461078c57806388f82020146107b65780638da5cb5b146107e95761029e565b806339509351116101fe57806349bd5a5e116101b757806349bd5a5e146106425780634a74bb021461065757806351bc3c851461066c57806352390c02146106815780635342acb4146106b45780635880b873146106e75761029e565b8063395093511461053b5780633bd5d173146105745780634144d9e41461059e5780634303443d146105b35780634549b039146105e6578063474fe03f146106185761029e565b80631ff53b60116102505780631ff53b601461041357806323b872dd146104465780632d8381191461048957806330599fc5146104b3578063313ce567146104dd5780633685d419146105085761029e565b806306fdde03146102a3578063095ea7b31461032d57806313114a9d1461037a5780631694505e146103a157806318160ddd146103d25780631bbae6e0146103e75761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610a95565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f25781810151838201526020016102da565b50505050905090810190601f16801561031f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033957600080fd5b506103666004803603604081101561035057600080fd5b506001600160a01b038135169060200135610b2b565b604080519115158252519081900360200190f35b34801561038657600080fd5b5061038f610b49565b60408051918252519081900360200190f35b3480156103ad57600080fd5b506103b6610b4f565b604080516001600160a01b039092168252519081900360200190f35b3480156103de57600080fd5b5061038f610b73565b3480156103f357600080fd5b506104116004803603602081101561040a57600080fd5b5035610b79565b005b34801561041f57600080fd5b506104116004803603602081101561043657600080fd5b50356001600160a01b0316610c19565b34801561045257600080fd5b506103666004803603606081101561046957600080fd5b506001600160a01b03813581169160208101359091169060400135610c93565b34801561049557600080fd5b5061038f600480360360208110156104ac57600080fd5b5035610d1a565b3480156104bf57600080fd5b50610411600480360360208110156104d657600080fd5b5035610d7c565b3480156104e957600080fd5b506104f2610dfb565b6040805160ff9092168252519081900360200190f35b34801561051457600080fd5b506104116004803603602081101561052b57600080fd5b50356001600160a01b0316610e04565b34801561054757600080fd5b506103666004803603604081101561055e57600080fd5b506001600160a01b038135169060200135610fc5565b34801561058057600080fd5b506104116004803603602081101561059757600080fd5b5035611013565b3480156105aa57600080fd5b506103b66110ed565b3480156105bf57600080fd5b50610411600480360360208110156105d657600080fd5b50356001600160a01b03166110fc565b3480156105f257600080fd5b5061038f6004803603604081101561060957600080fd5b50803590602001351515611284565b34801561062457600080fd5b506104116004803603602081101561063b57600080fd5b5035611316565b34801561064e57600080fd5b506103b66113c3565b34801561066357600080fd5b506103666113e7565b34801561067857600080fd5b506104116113f7565b34801561068d57600080fd5b50610411600480360360208110156106a457600080fd5b50356001600160a01b0316611465565b3480156106c057600080fd5b50610366600480360360208110156106d757600080fd5b50356001600160a01b0316611647565b3480156106f357600080fd5b506104116004803603602081101561070a57600080fd5b5035611665565b34801561071d57600080fd5b5061038f6004803603602081101561073457600080fd5b50356001600160a01b0316611719565b34801561075057600080fd5b5061041161177b565b34801561076557600080fd5b506104116004803603602081101561077c57600080fd5b50356001600160a01b031661180b565b34801561079857600080fd5b50610411600480360360208110156107af57600080fd5b5035611998565b3480156107c257600080fd5b50610366600480360360208110156107d957600080fd5b50356001600160a01b0316611a01565b3480156107f557600080fd5b506103b6611a1f565b34801561080a57600080fd5b506102b8611a2e565b34801561081f57600080fd5b506104116004803603602081101561083657600080fd5b5035611a8f565b34801561084957600080fd5b506103666004803603604081101561086057600080fd5b506001600160a01b038135169060200135611aec565b34801561088257600080fd5b506104116004803603602081101561089957600080fd5b5035611b54565b3480156108ac57600080fd5b50610411611bf2565b3480156108c157600080fd5b50610366600480360360408110156108d857600080fd5b506001600160a01b038135169060200135611ce0565b3480156108fa57600080fd5b506104116004803603604081101561091157600080fd5b506001600160a01b0381351690602001351515611cf4565b34801561093557600080fd5b5061038f611d77565b34801561094a57600080fd5b506103b6611d7d565b34801561095f57600080fd5b506104116004803603602081101561097657600080fd5b50351515611d8c565b34801561098b57600080fd5b50610411611e02565b3480156109a057600080fd5b50610411600480360360208110156109b757600080fd5b5035611e6f565b3480156109ca57600080fd5b50610411600480360360208110156109e157600080fd5b5035611f23565b3480156109f457600080fd5b5061038f60048036036040811015610a0b57600080fd5b506001600160a01b0381358116916020013516611fc1565b348015610a2f57600080fd5b5061041160048036036020811015610a4657600080fd5b50356001600160a01b0316611fec565b348015610a6257600080fd5b506104116120d2565b348015610a7757600080fd5b5061038f612134565b348015610a8c57600080fd5b50610366612138565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b6000610b3f610b38612191565b8484612195565b5060015b92915050565b600d5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600b5490565b610b81612191565b6000546001600160a01b03908116911614610bd1576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b633b9aca00811015610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180613660602c913960400191505060405180910390fd5b601a55565b610c21612191565b6000546001600160a01b03908116911614610c71576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ca0848484612281565b610d1084610cac612191565b610d0b856040518060600160405280602881526020016136ad602891396001600160a01b038a16600090815260056020526040812090610cea612191565b6001600160a01b03168152602081019190915260400160002054919061272c565b612195565b5060019392505050565b6000600c54821115610d5d5760405162461bcd60e51b815260040180806020018281038252602a815260200180613597602a913960400191505060405180910390fd5b6000610d676127c3565b9050610d738382612148565b9150505b919050565b610d84612191565b6000546001600160a01b03908116911614610dd4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b610de630610de0611a1f565b83612195565b610df830610df2611a1f565b83612281565b50565b60105460ff1690565b610e0c612191565b6000546001600160a01b03908116911614610e5c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610ec9576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610fc157816001600160a01b031660088281548110610eed57fe5b6000918252602090912001546001600160a01b03161415610fb957600880546000198101908110610f1a57fe5b600091825260209091200154600880546001600160a01b039092169183908110610f4057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610f9257fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610fc1565b600101610ecc565b5050565b6000610b3f610fd2612191565b84610d0b8560056000610fe3612191565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906127e6565b600061101d612191565b6001600160a01b03811660009081526007602052604090205490915060ff16156110785760405162461bcd60e51b815260040180806020018281038252602c8152602001806137ee602c913960400191505060405180910390fd5b600061108383612840565b505050506001600160a01b0384166000908152600360205260409020549192506110af91905082612887565b6001600160a01b038316600090815260036020526040902055600c546110d59082612887565b600c55600d546110e590846127e6565b600d55505050565b6019546001600160a01b031681565b611104612191565b6000546001600160a01b03908116911614611154576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111b05760405162461bcd60e51b815260040180806020018281038252602481526020018061373e6024913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff161561121e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600b548311156112dd576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816112fc5760006112ed84612840565b50939550610b43945050505050565b600061130784612840565b50929550610b43945050505050565b61131e612191565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061137930611719565b9050818110156113ba5760405162461bcd60e51b815260040180806020018281038252602e815260200180613569602e913960400191505060405180910390fd5b610fc1826128c9565b7f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f81565b601954600160a81b900460ff1681565b6113ff612191565b6000546001600160a01b0390811691161461144f576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061145a30611719565b9050610df8816128c9565b61146d612191565b6000546001600160a01b039081169116146114bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156115195760405162461bcd60e51b81526004018080602001828103825260228152602001806137cc6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611587576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156115e1576001600160a01b0381166000908152600360205260409020546115c790610d1a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b61166d612191565b6000546001600160a01b039081169116146116bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611714576040805162461bcd60e51b815260206004820152601b60248201527f7461784665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601155565b6001600160a01b03811660009081526007602052604081205460ff161561175957506001600160a01b038116600090815260046020526040902054610d77565b6001600160a01b038216600090815260036020526040902054610b4390610d1a565b611783612191565b6000546001600160a01b039081169116146117d3576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116906000805160206136f5833981519152908390a3600080546001600160a01b0319169055565b611813612191565b6000546001600160a01b03908116911614611863576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166118d0576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015610fc157816001600160a01b0316600a82815481106118f457fe5b6000918252602090912001546001600160a01b0316141561199057600a8054600019810190811061192157fe5b600091825260209091200154600a80546001600160a01b03909216918390811061194757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a805480610f9257fe5b6001016118d3565b6119a0612191565b6000546001600160a01b039081169116146119f0576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6119f981611316565b610df86120d2565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b611a97612191565b6000546001600160a01b03908116911614611ae7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601455565b6000610b3f611af9612191565b84610d0b8560405180606001604052806025815260200161383d6025913960056000611b23612191565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061272c565b611b5c612191565b6000546001600160a01b03908116911614611bac576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611bed5760405162461bcd60e51b81526004018080602001828103825260218152602001806137876021913960400191505060405180910390fd5b601355565b6001546001600160a01b03163314611c3b5760405162461bcd60e51b815260040180806020018281038252602381526020018061381a6023913960400191505060405180910390fd5b6002544211611c91576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116916000805160206136f583398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b3f611ced612191565b8484612281565b611cfc612191565b6000546001600160a01b03908116911614611d4c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b6018546001600160a01b031681565b611d94612191565b6000546001600160a01b03908116911614611de4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60198054911515600160a81b0260ff60a81b19909216919091179055565b611e0a612191565b6000546001600160a01b03908116911614611e5a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6019805460ff60b01b1916600160b01b179055565b611e77612191565b6000546001600160a01b03908116911614611ec7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611f1e576040805162461bcd60e51b815260206004820152601b60248201527f6e66744665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601255565b611f2b612191565b6000546001600160a01b03908116911614611f7b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181906000805160206136f5833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611ff4612191565b6000546001600160a01b03908116911614612044576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b0381166120895760405162461bcd60e51b81526004018080602001828103825260268152602001806135c16026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206136f583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6120da612191565b6000546001600160a01b0390811691161461212a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b47610df881612c29565b4790565b601954600160b01b900460ff1681565b600061218a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ce2565b9392505050565b3390565b6001600160a01b0383166121da5760405162461bcd60e51b81526004018080602001828103825260248152602001806137a86024913960400191505060405180910390fd5b6001600160a01b03821661221f5760405162461bcd60e51b81526004018080602001828103825260228152602001806135e76022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122c65760405162461bcd60e51b81526004018080602001828103825260258152602001806137626025913960400191505060405180910390fd5b6001600160a01b03821661230b5760405162461bcd60e51b81526004018080602001828103825260238152602001806135466023913960400191505060405180910390fd5b6000811161234a5760405162461bcd60e51b81526004018080602001828103825260298152602001806137156029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156123b2576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b03821660009081526009602052604090205460ff161561241a576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615612479576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b612481611a1f565b6001600160a01b0316836001600160a01b0316141580156124bb57506124a5611a1f565b6001600160a01b0316826001600160a01b031614155b156126cf57601a548111156125015760405162461bcd60e51b81526004018080602001828103825260288152602001806136386028913960400191505060405180910390fd5b7f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f6001600160a01b0316836001600160a01b0316141561262b57601954600160b01b900460ff16612599576040805162461bcd60e51b815260206004820152601760248201527f5761697420666f72206f70656e65642074726164696e67000000000000000000604482015290519081900360640190fd5b601a546125a583611719565b11156125e25760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601a546125ee32611719565b111561262b5760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601954600160a01b900460ff1615801561264e5750601954600160a81b900460ff165b801561268c57507f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f6001600160a01b0316836001600160a01b031614155b156126cf576126cf817f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f6001600160a01b0316846001600160a01b031614612d47565b6001600160a01b03831660009081526006602052604090205460019060ff168061271157506001600160a01b03831660009081526006602052604090205460ff165b1561271a575060005b61272684848484612dbf565b50505050565b600081848411156127bb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612780578181015183820152602001612768565b50505050905090810190601f1680156127ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006127d0612f2d565b90925090506127df8282612148565b9250505090565b60008282018381101561218a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006128578a613090565b925092509250600080600061286d8d8686613102565b919f909e50909c50959a5093985091965092945050505050565b600061218a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272c565b604080516002808252606080830184529260208301908036833701905050905030816000815181106128f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561297057600080fd5b505afa158015612984573d6000803e3d6000fd5b505050506040513d602081101561299a57600080fd5b50518151829060019081106129ab57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506129f6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612195565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612a9b578181015183820152602001612a83565b505050509050019650505050505050600060405180830381600087803b158015612ac457600080fd5b505af1925050508015612ad5575060015b612ba8573d808015612b03576040519150601f19603f3d011682016040523d82523d6000602084013e612b08565b606091505b507fc062bf45765a468f8a8d2ac697498f1f0211f1c5ac8a9c51fad14b916351c565816040518080602001828103825283818151815260200191508051906020019080838360005b83811015612b68578181015183820152602001612b50565b50505050905090810190601f168015612b955780820380516001836020036101000a031916815260200191505b509250505060405180910390a150610fc1565b7f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612c11578181015183820152602001612bf9565b50505050905001935050505060405180910390a15050565b6000612c426012546013546127e690919063ffffffff16565b90506000612c6582612c5f6013548661315f90919063ffffffff16565b90612148565b6019546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612ca0573d6000803e3d6000fd5b506018546001600160a01b03166108fc612cba8584612887565b6040518115909202916000818181858888f19350505050158015612726573d6000803e3d6000fd5b60008183612d315760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612780578181015183820152602001612768565b506000838581612d3d57fe5b0495945050505050565b6019805460ff60a01b1916600160a01b1790556000612d6530611719565b90506000612d836064612c5f6014548761315f90919063ffffffff16565b9050828015612d9157508082115b15612d9a578091505b612da3826128c9565b612dac47612c29565b50506019805460ff60a01b191690555050565b80612dcc57612dcc6131b8565b6001600160a01b03841660009081526007602052604090205460ff168015612e0d57506001600160a01b03831660009081526007602052604090205460ff16155b15612e2257612e1d848484613201565b612f20565b6001600160a01b03841660009081526007602052604090205460ff16158015612e6357506001600160a01b03831660009081526007602052604090205460ff165b15612e7357612e1d848484613325565b6001600160a01b03841660009081526007602052604090205460ff16158015612eb557506001600160a01b03831660009081526007602052604090205460ff16155b15612ec557612e1d8484846133ce565b6001600160a01b03841660009081526007602052604090205460ff168015612f0557506001600160a01b03831660009081526007602052604090205460ff165b15612f1557612e1d848484613412565b612f208484846133ce565b8061272657612726613485565b600c54600b546000918291825b60085481101561305e57826003600060088481548110612f5657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612fbb5750816004600060088481548110612f9457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612fd257600c54600b549450945050505061308c565b6130126003600060088481548110612fe657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612887565b9250613054600460006008848154811061302857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612887565b9150600101612f3a565b50600b54600c5461306e91612148565b82101561308657600c54600b5493509350505061308c565b90925090505b9091565b6000806000806130b16103e8612c5f6011548861315f90919063ffffffff16565b905060006130dc6103e8612c5f6130d56012546013546127e690919063ffffffff16565b899061315f565b905060006130f4826130ee8986612887565b90612887565b979296509094509092505050565b6000806000806131106127c3565b9050600061311e888361315f565b9050600061312c888461315f565b9050600061313a888561315f565b9050600061314c826130ee8686612887565b939b939a50919850919650505050505050565b60008261316e57506000610b43565b8282028284828161317b57fe5b041461218a5760405162461bcd60e51b815260040180806020018281038252602181526020018061368c6021913960400191505060405180910390fd5b6011541580156131c85750601254155b80156131d45750601354155b156131de576131ff565b60118054601555601280546016556013805460175560009283905590829055555b565b60008060008060008061321387612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506132459088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546132749087612887565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546132a390866127e6565b6001600160a01b0389166000908152600360205260409020556132c581613498565b6132cf8483613521565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061333787612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506133699087612887565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461339f90846127e6565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546132a390866127e6565b6000806000806000806133e087612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132749087612887565b60008060008060008061342487612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506134569088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546133699087612887565b6015546011556017546013819055601255565b60006134a26127c3565b905060006134b0838361315f565b306000908152600360205260409020549091506134cd90826127e6565b3060009081526003602090815260408083209390935560079052205460ff161561351c573060009081526004602052604090205461350b90846127e6565b306000908152600460205260409020555b505050565b600c5461352e9083612887565b600c55600d5461353e90826127e6565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373636f6e74726163742062616c616e63652073686f756c642062652067726561746572207468656e20616d6f756e74416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373416c726561647920626f75676874206d61785478416d6f756e742c20776169742074696c6c20636865636b206f66665472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e6d61785478416d6f756e742073686f756c642062652067726561746572207468616e20746f74616c20316539536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736d61726b6574696e674665652073686f756c6420626520696e2030202d2034393045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122038753535f093f12023bfe1465b803bdcb2d2579704508ce306c0a5b4be35f15564736f6c634300060c0033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.