ETH Price: $2,415.49 (-0.24%)

Token

Jeets Bot (JEETS)
 

Overview

Max Total Supply

100,000,000 JEETS

Holders

195

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.102542635907780865 JEETS

Value
$0.00
0xe3b100e6150139bd82d75538bdbfde5d844d2635
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:
JEETS

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-21
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

/**
 * @dev Collection of functions related to the address type
 */
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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @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://consensys.net/diligence/blog/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"
        );

        (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
            functionCallWithValue(
                target,
                data,
                0,
                "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"
        );
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage)
        private
        pure
    {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IDistributor {

    function getMinHoldingAmount() external view returns (uint256);

    function createShareHolder(address _address) external;

    function removeShareHolder(address _address) external;
}

contract JEETS is Context, IERC20, Ownable {
    using Address for address;

    //Marketing or team wallet.
    address payable public marketingWallet =
        payable(0x124842f0ba72c26D2f6aF22EEf6ffA41784734b9);

    //Dead Wallet
    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;

    //Mapping section for better tracking.
    mapping(address => uint256) private _tOwned;

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

    mapping(address => bool) private _isExcludedFromFee;

    //Loging and Event Information for better troubleshooting.
    event Log(string, uint256);

    event AuditLog(string, address);

    event RewardLiquidityProviders(uint256 tokenAmount);

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    //Supply Definition.
    uint256 private theTotalSupply = 100_000_000 ether;

    uint256 private _tFeeTotal;

    //Token Definition.
    string public constant name = "Jeets Bot";
    string public constant symbol = "JEETS";
    uint8 public constant decimals = 18;
    //Taxes Definition.
    uint256 public buyFee = 4;

    uint256 public sellFee = 4;

    uint256 public minimumTokensBeforeSwap = 10_000 ether;

    //Oracle Price Update, Manual Process.
    uint256 public swapOutput = 0;

    //Router and Pair Configuration.
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public  uniswapV2Pair;
    address private immutable WETH;
    //Tracking of Automatic Swap vs Manual Swap.
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;

    bool public normalTransfer = true;

    bool public rewardEnabled = true;

    IDistributor public Distributor;

    bool public removeHolderByASell = true;

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

    constructor(address _Distributor) {
        _tOwned[_msgSender()] = theTotalSupply;

        address currentRouter;

        currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Router

        Distributor = IDistributor(_Distributor);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter);

        WETH = _uniswapV2Router.WETH();

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;

        _isExcludedFromFee[address(this)] = true;

        _isExcludedFromFee[currentRouter] = true;

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

    //Readable Functions.
    function totalSupply() public view override returns (uint256) {
        return theTotalSupply;
    }

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

    //ERC 20 Standard Transfer Functions
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    //ERC 20 Standard Allowance Function
    function allowance(address _owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[_owner][spender];
    }

    //ERC 20 Standard Approve Function
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    //ERC 20 Standard Transfer From
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    //ERC 20 Standard increase Allowance
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    //ERC 20 Standard decrease Allowance
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    //Approve Function
    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 from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            _tOwned[from] >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        if (
            to != uniswapV2Pair &&
            from != uniswapV2Pair &&
            normalTransfer == true
        ) {
            return _tokenTransfer(from, to, amount);
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinimumTokenBalance = contractTokenBalance >=
            minimumTokensBeforeSwap;
        uint256 fee = 0;

        if (
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            overMinimumTokenBalance &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify();
        }
        if (to == uniswapV2Pair && !_isExcludedFromFee[from]) {
            fee = (sellFee * amount) / 100;
        }
        if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
            fee = (buyFee * amount) / 100;
        }
        amount -= fee;
        if (fee > 0) {
            _tokenTransfer(from, address(this), fee);
        }
        processShareHolder(from, to, amount);
        _tokenTransfer(from, to, amount);
    }

    function setPair() external onlyOwner{
     
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        
    }

    function processShareHolder(
        address _from,
        address _to,
        uint256 _amount
    ) internal {
        if (rewardEnabled) {
            //is buying
            if (_from == uniswapV2Pair) {
                uint256 userBalance = balanceOf(_to) + _amount;

                if (userBalance >= Distributor.getMinHoldingAmount()) {
                    Distributor.createShareHolder(_to);
                }
            }

            //is selling
            if (_to == uniswapV2Pair) {
                uint256 userBalance = balanceOf(_from) - _amount;

                if (removeHolderByASell == true) {
                    Distributor.removeShareHolder(_from);
                } else if (
                    removeHolderByASell == false &&
                    userBalance < Distributor.getMinHoldingAmount()
                ) {
                    Distributor.removeShareHolder(_from);
                }
            }
        }
    }

    function swapAndLiquify() public lockTheSwap {

        uint256 totalTokens = balanceOf(address(this));

        swapTokensForEth(totalTokens);

        uint256 ethBalance = address(this).balance;

        transferToAddressETH(marketingWallet, ethBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
       
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _tOwned[sender] -= amount;
        _tOwned[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

    function excludeFromFee(address account, bool _status) external onlyOwner {
        _isExcludedFromFee[account] = _status;

    }

    function setTokensToSwap(uint256 _minimumTokensBeforeSwap)
        external
        onlyOwner
    {
        require(
            _minimumTokensBeforeSwap >= 100 ether,
            "You need to enter more than 100 tokens."
        );
        minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        require(swapAndLiquifyEnabled != _enabled, "Value already set");
        swapAndLiquifyEnabled = _enabled;
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != address(0), "setmarketingWallet: ZERO");
        marketingWallet = payable(_marketingWallet);
    }

    function removeHolderBySell(bool _status) external onlyOwner {
        removeHolderByASell = _status;
    }

    function setNormalTransfer(bool _status) external onlyOwner {
        normalTransfer = _status;
    }

    function setRewardEnabled(bool _status) external onlyOwner {
        rewardEnabled = _status;
    }

    function setDistributor(address _distributor) external onlyOwner {
        Distributor = IDistributor(_distributor);
    }

    function transferToAddressETH(address payable recipient, uint256 amount)
        private
    {
        (bool succ, ) = recipient.call{value: amount}("");
        require(succ, "Transfer failed.");
    }

    receive() external payable {}

    // Withdraw ETH that's potentially stuck in the Contract
    function recoverETHfromContract() external onlyOwner {
        uint256 ethBalance = address(this).balance;
        (bool succ, ) = payable(marketingWallet).call{value: ethBalance}("");
        require(succ, "Transfer failed");
    }

    // Withdraw ERC20 tokens that are potentially stuck in Contract
    function recoverTokensFromContract(address _tokenAddress, uint256 _amount)
        external
        onlyOwner
    {
        bool succ = IERC20(_tokenAddress).transfer(marketingWallet, _amount);
        require(succ, "Transfer failed");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_Distributor","type":"address"}],"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":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"AuditLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Log","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":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","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":"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":"Distributor","outputs":[{"internalType":"contract IDistributor","name":"","type":"address"}],"stateMutability":"view","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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"normalTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeHolderByASell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"removeHolderBySell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setNormalTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setRewardEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

60c0604052600180546001600160a01b03191673124842f0ba72c26d2f6af22eef6ffa41784734b91790556a52b7d2dcc80cd2e40000006005556004600781905560085569021e19e0c9bab24000006009556000600a55600b805461010160b01b62ffffff60a81b19909116179055600c805460ff60a01b1916600160a01b1790553480156200008e57600080fd5b506040516200209f3803806200209f833981016040819052620000b19162000299565b620000bc3362000249565b6005543360009081526002602090815260409182902092909255600c80546001600160a01b0319166001600160a01b03851617905580516315ab88c960e31b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d928392839263ad5c4648926004808401939192918290030181865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000168919062000299565b6001600160a01b0390811660a0528116608052600160046000620001946000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155908616835291208054909216179055620001f03390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200023891815260200190565b60405180910390a3505050620002cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620002ac57600080fd5b81516001600160a01b0381168114620002c457600080fd5b9392505050565b60805160a051611d926200030d60003960006114e80152600081816102e30152818161097201528181610a0301528181611540015261157c0152611d926000f3fe60806040526004361061024a5760003560e01c8063715018a611610139578063b63eddb1116100b6578063dd62ed3e1161007a578063dd62ed3e14610709578063df8408fe1461074f578063e6be4a721461076f578063ee32dafc1461078f578063ee5c02a2146107b0578063f2fde38b146107d057600080fd5b8063b63eddb11461067d578063c49b9a801461069d578063ce831ed5146106bd578063d2d7ad83146106d2578063d345e5f1146106e857600080fd5b80638da5cb5b116100fd5780638da5cb5b146105d957806395d89b41146105f7578063a457c2d714610628578063a9059cbb14610648578063b29ad50a1461066857600080fd5b8063715018a61461054e57806375619ab51461056357806375f0a8741461058357806385141a77146105a3578063889a101c146105b957600080fd5b806339509351116101c75780634bdc18de1161018b5780634bdc18de146104945780635342acb4146104a95780635d098b38146104e25780635eaa82471461050257806370a082311461051857600080fd5b806339509351146103fb578063461d94761461041b578063470624021461043d57806349bd5a5e146104535780634a74bb021461047357600080fd5b80632039d8901161020e5780632039d8901461035d578063220f66961461037d57806323b872dd1461039e5780632b14ca56146103be578063313ce567146103d457600080fd5b806306fdde0314610256578063095ea7b3146102a15780631694505e146102d157806317ee69951461031d57806318160ddd1461033e57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061028b604051806040016040528060098152602001681299595d1cc8109bdd60ba1b81525081565b6040516102989190611a3e565b60405180910390f35b3480156102ad57600080fd5b506102c16102bc366004611aa1565b6107f0565b6040519015158152602001610298565b3480156102dd57600080fd5b506103057f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b50600b546102c190600160b81b900460ff1681565b34801561034a57600080fd5b506005545b604051908152602001610298565b34801561036957600080fd5b50600c54610305906001600160a01b031681565b34801561038957600080fd5b50600b546102c190600160a01b900460ff1681565b3480156103aa57600080fd5b506102c16103b9366004611acd565b610807565b3480156103ca57600080fd5b5061034f60085481565b3480156103e057600080fd5b506103e9601281565b60405160ff9091168152602001610298565b34801561040757600080fd5b506102c1610416366004611aa1565b6108bb565b34801561042757600080fd5b5061043b610436366004611b0e565b6108f2565b005b34801561044957600080fd5b5061034f60075481565b34801561045f57600080fd5b50600b54610305906001600160a01b031681565b34801561047f57600080fd5b50600b546102c190600160a81b900460ff1681565b3480156104a057600080fd5b5061043b610968565b3480156104b557600080fd5b506102c16104c4366004611b27565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104ee57600080fd5b5061043b6104fd366004611b27565b610b16565b34801561050e57600080fd5b5061034f600a5481565b34801561052457600080fd5b5061034f610533366004611b27565b6001600160a01b031660009081526002602052604090205490565b34801561055a57600080fd5b5061043b610b96565b34801561056f57600080fd5b5061043b61057e366004611b27565b610baa565b34801561058f57600080fd5b50600154610305906001600160a01b031681565b3480156105af57600080fd5b5061030561dead81565b3480156105c557600080fd5b5061043b6105d4366004611b59565b610bd4565b3480156105e557600080fd5b506000546001600160a01b0316610305565b34801561060357600080fd5b5061028b604051806040016040528060058152602001644a4545545360d81b81525081565b34801561063457600080fd5b506102c1610643366004611aa1565b610bfa565b34801561065457600080fd5b506102c1610663366004611aa1565b610c31565b34801561067457600080fd5b5061043b610c3e565b34801561068957600080fd5b5061043b610698366004611b59565b610c95565b3480156106a957600080fd5b5061043b6106b8366004611b59565b610cbb565b3480156106c957600080fd5b5061043b610d37565b3480156106de57600080fd5b5061034f60095481565b3480156106f457600080fd5b50600b546102c190600160b01b900460ff1681565b34801561071557600080fd5b5061034f610724366004611b76565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561075b57600080fd5b5061043b61076a366004611baf565b610ddc565b34801561077b57600080fd5b5061043b61078a366004611aa1565b610e0f565b34801561079b57600080fd5b50600c546102c190600160a01b900460ff1681565b3480156107bc57600080fd5b5061043b6107cb366004611b59565b610ed6565b3480156107dc57600080fd5b5061043b6107eb366004611b27565b610efc565b60006107fd338484610f75565b5060015b92915050565b6001600160a01b0383166000908152600360209081526040808320338452909152812054828110156108915760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61089c85858561109a565b6108b085336108ab8685611bf3565b610f75565b506001949350505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107fd9185906108ab908690611c06565b6108fa6113e7565b68056bc75e2d631000008110156109635760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f20656e746572206d6f7265207468616e20313030206044820152663a37b5b2b7399760c91b6064820152608401610888565b600955565b6109706113e7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f29190611c19565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a839190611c19565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af49190611c19565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610b1e6113e7565b6001600160a01b038116610b745760405162461bcd60e51b815260206004820152601860248201527f7365746d61726b6574696e6757616c6c65743a205a45524f00000000000000006044820152606401610888565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610b9e6113e7565b610ba86000611441565b565b610bb26113e7565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b610bdc6113e7565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107fd9185906108ab908690611bf3565b60006107fd33848461109a565b600b805460ff60a01b1916600160a01b179055306000908152600260205260408120549050610c6c81611491565b6001544790610c84906001600160a01b031682611629565b5050600b805460ff60a01b19169055565b610c9d6113e7565b600b8054911515600160b01b0260ff60b01b19909216919091179055565b610cc36113e7565b801515600b60159054906101000a900460ff16151503610d195760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610888565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b610d3f6113e7565b60015460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114610d90576040519150601f19603f3d011682016040523d82523d6000602084013e610d95565b606091505b5050905080610dd85760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610888565b5050565b610de46113e7565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b610e176113e7565b60015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb906044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e909190611c36565b905080610ed15760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610888565b505050565b610ede6113e7565b600b8054911515600160b81b0260ff60b81b19909216919091179055565b610f046113e7565b6001600160a01b038116610f695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610888565b610f7281611441565b50565b6001600160a01b038316610fd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610888565b6001600160a01b0382166110385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610888565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166110fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610888565b6001600160a01b0382166111605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610888565b600081116111c25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610888565b6001600160a01b0383166000908152600260205260409020548111156112395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610888565b600b546001600160a01b038381169116148015906112655750600b546001600160a01b03848116911614155b801561127f5750600b54600160b01b900460ff1615156001145b1561128f57610ed18383836116bf565b30600090815260026020526040812054600954600b5491929083101591600160a01b900460ff161580156112d15750600b546001600160a01b03878116911614155b80156112da5750815b80156112ef5750600b54600160a81b900460ff165b156112fc576112fc610c3e565b600b546001600160a01b03868116911614801561133257506001600160a01b03861660009081526004602052604090205460ff16155b15611354576064846008546113479190611c53565b6113519190611c6a565b90505b600b546001600160a01b03878116911614801561138a57506001600160a01b03851660009081526004602052604090205460ff16155b156113ac5760648460075461139f9190611c53565b6113a99190611c6a565b90505b6113b68185611bf3565b935080156113c9576113c98630836116bf565b6113d4868686611760565b6113df8686866116bf565b505050505050565b6000546001600160a01b03163314610ba85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610888565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114c6576114c6611c8c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061151a5761151a611c8c565b60200260200101906001600160a01b031690816001600160a01b031681525050611565307f000000000000000000000000000000000000000000000000000000000000000084610f75565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906115ba908590600090869030904290600401611ce6565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161161d929190611d22565b60405180910390a15050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611676576040519150601f19603f3d011682016040523d82523d6000602084013e61167b565b606091505b5050905080610ed15760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610888565b6001600160a01b038316600090815260026020526040812080548392906116e7908490611bf3565b90915550506001600160a01b03821660009081526002602052604081208054839290611714908490611c06565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108d91815260200190565b600b54600160b81b900460ff1615610ed157600b546001600160a01b039081169084160361188d576001600160a01b0382166000908152600260205260408120546117ac908390611c06565b9050600c60009054906101000a90046001600160a01b03166001600160a01b0316631f34e7726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190611d43565b811061188b57600c54604051632dd2210d60e21b81526001600160a01b0385811660048301529091169063b748843490602401600060405180830381600087803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b505b600b546001600160a01b0390811690831603610ed1576001600160a01b0383166000908152600260205260408120546118c7908390611bf3565b600c54909150600160a01b900460ff16151560010361194457600c546040516302d5acb960e51b81526001600160a01b03868116600483015290911690635ab5972090602401600060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b50505050611a38565b600c54600160a01b900460ff161580156119d35750600c60009054906101000a90046001600160a01b03166001600160a01b0316631f34e7726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d09190611d43565b81105b15611a3857600c546040516302d5acb960e51b81526001600160a01b03868116600483015290911690635ab5972090602401600060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b505050505b50505050565b600060208083528351808285015260005b81811015611a6b57858101830151858201604001528201611a4f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f7257600080fd5b60008060408385031215611ab457600080fd5b8235611abf81611a8c565b946020939093013593505050565b600080600060608486031215611ae257600080fd5b8335611aed81611a8c565b92506020840135611afd81611a8c565b929592945050506040919091013590565b600060208284031215611b2057600080fd5b5035919050565b600060208284031215611b3957600080fd5b8135611b4481611a8c565b9392505050565b8015158114610f7257600080fd5b600060208284031215611b6b57600080fd5b8135611b4481611b4b565b60008060408385031215611b8957600080fd5b8235611b9481611a8c565b91506020830135611ba481611a8c565b809150509250929050565b60008060408385031215611bc257600080fd5b8235611bcd81611a8c565b91506020830135611ba481611b4b565b634e487b7160e01b600052601160045260246000fd5b8181038181111561080157610801611bdd565b8082018082111561080157610801611bdd565b600060208284031215611c2b57600080fd5b8151611b4481611a8c565b600060208284031215611c4857600080fd5b8151611b4481611b4b565b808202811582820484141761080157610801611bdd565b600082611c8757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015611cdb5781516001600160a01b031687529582019590820190600101611cb6565b509495945050505050565b85815284602082015260a060408201526000611d0560a0830186611ca2565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000611d3b6040830184611ca2565b949350505050565b600060208284031215611d5557600080fd5b505191905056fea2646970667358221220452dda89c77fb41e87abdb3216559f1a16f848ead5b0366ca39cfc7b3d4c348064736f6c634300081300330000000000000000000000005688f69c9cb53f5b09ab22dbacd7eb8d812274a1

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063715018a611610139578063b63eddb1116100b6578063dd62ed3e1161007a578063dd62ed3e14610709578063df8408fe1461074f578063e6be4a721461076f578063ee32dafc1461078f578063ee5c02a2146107b0578063f2fde38b146107d057600080fd5b8063b63eddb11461067d578063c49b9a801461069d578063ce831ed5146106bd578063d2d7ad83146106d2578063d345e5f1146106e857600080fd5b80638da5cb5b116100fd5780638da5cb5b146105d957806395d89b41146105f7578063a457c2d714610628578063a9059cbb14610648578063b29ad50a1461066857600080fd5b8063715018a61461054e57806375619ab51461056357806375f0a8741461058357806385141a77146105a3578063889a101c146105b957600080fd5b806339509351116101c75780634bdc18de1161018b5780634bdc18de146104945780635342acb4146104a95780635d098b38146104e25780635eaa82471461050257806370a082311461051857600080fd5b806339509351146103fb578063461d94761461041b578063470624021461043d57806349bd5a5e146104535780634a74bb021461047357600080fd5b80632039d8901161020e5780632039d8901461035d578063220f66961461037d57806323b872dd1461039e5780632b14ca56146103be578063313ce567146103d457600080fd5b806306fdde0314610256578063095ea7b3146102a15780631694505e146102d157806317ee69951461031d57806318160ddd1461033e57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061028b604051806040016040528060098152602001681299595d1cc8109bdd60ba1b81525081565b6040516102989190611a3e565b60405180910390f35b3480156102ad57600080fd5b506102c16102bc366004611aa1565b6107f0565b6040519015158152602001610298565b3480156102dd57600080fd5b506103057f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b50600b546102c190600160b81b900460ff1681565b34801561034a57600080fd5b506005545b604051908152602001610298565b34801561036957600080fd5b50600c54610305906001600160a01b031681565b34801561038957600080fd5b50600b546102c190600160a01b900460ff1681565b3480156103aa57600080fd5b506102c16103b9366004611acd565b610807565b3480156103ca57600080fd5b5061034f60085481565b3480156103e057600080fd5b506103e9601281565b60405160ff9091168152602001610298565b34801561040757600080fd5b506102c1610416366004611aa1565b6108bb565b34801561042757600080fd5b5061043b610436366004611b0e565b6108f2565b005b34801561044957600080fd5b5061034f60075481565b34801561045f57600080fd5b50600b54610305906001600160a01b031681565b34801561047f57600080fd5b50600b546102c190600160a81b900460ff1681565b3480156104a057600080fd5b5061043b610968565b3480156104b557600080fd5b506102c16104c4366004611b27565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104ee57600080fd5b5061043b6104fd366004611b27565b610b16565b34801561050e57600080fd5b5061034f600a5481565b34801561052457600080fd5b5061034f610533366004611b27565b6001600160a01b031660009081526002602052604090205490565b34801561055a57600080fd5b5061043b610b96565b34801561056f57600080fd5b5061043b61057e366004611b27565b610baa565b34801561058f57600080fd5b50600154610305906001600160a01b031681565b3480156105af57600080fd5b5061030561dead81565b3480156105c557600080fd5b5061043b6105d4366004611b59565b610bd4565b3480156105e557600080fd5b506000546001600160a01b0316610305565b34801561060357600080fd5b5061028b604051806040016040528060058152602001644a4545545360d81b81525081565b34801561063457600080fd5b506102c1610643366004611aa1565b610bfa565b34801561065457600080fd5b506102c1610663366004611aa1565b610c31565b34801561067457600080fd5b5061043b610c3e565b34801561068957600080fd5b5061043b610698366004611b59565b610c95565b3480156106a957600080fd5b5061043b6106b8366004611b59565b610cbb565b3480156106c957600080fd5b5061043b610d37565b3480156106de57600080fd5b5061034f60095481565b3480156106f457600080fd5b50600b546102c190600160b01b900460ff1681565b34801561071557600080fd5b5061034f610724366004611b76565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561075b57600080fd5b5061043b61076a366004611baf565b610ddc565b34801561077b57600080fd5b5061043b61078a366004611aa1565b610e0f565b34801561079b57600080fd5b50600c546102c190600160a01b900460ff1681565b3480156107bc57600080fd5b5061043b6107cb366004611b59565b610ed6565b3480156107dc57600080fd5b5061043b6107eb366004611b27565b610efc565b60006107fd338484610f75565b5060015b92915050565b6001600160a01b0383166000908152600360209081526040808320338452909152812054828110156108915760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61089c85858561109a565b6108b085336108ab8685611bf3565b610f75565b506001949350505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107fd9185906108ab908690611c06565b6108fa6113e7565b68056bc75e2d631000008110156109635760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f20656e746572206d6f7265207468616e20313030206044820152663a37b5b2b7399760c91b6064820152608401610888565b600955565b6109706113e7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f29190611c19565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a839190611c19565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af49190611c19565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610b1e6113e7565b6001600160a01b038116610b745760405162461bcd60e51b815260206004820152601860248201527f7365746d61726b6574696e6757616c6c65743a205a45524f00000000000000006044820152606401610888565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610b9e6113e7565b610ba86000611441565b565b610bb26113e7565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b610bdc6113e7565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107fd9185906108ab908690611bf3565b60006107fd33848461109a565b600b805460ff60a01b1916600160a01b179055306000908152600260205260408120549050610c6c81611491565b6001544790610c84906001600160a01b031682611629565b5050600b805460ff60a01b19169055565b610c9d6113e7565b600b8054911515600160b01b0260ff60b01b19909216919091179055565b610cc36113e7565b801515600b60159054906101000a900460ff16151503610d195760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610888565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b610d3f6113e7565b60015460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114610d90576040519150601f19603f3d011682016040523d82523d6000602084013e610d95565b606091505b5050905080610dd85760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610888565b5050565b610de46113e7565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b610e176113e7565b60015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb906044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e909190611c36565b905080610ed15760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610888565b505050565b610ede6113e7565b600b8054911515600160b81b0260ff60b81b19909216919091179055565b610f046113e7565b6001600160a01b038116610f695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610888565b610f7281611441565b50565b6001600160a01b038316610fd75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610888565b6001600160a01b0382166110385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610888565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166110fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610888565b6001600160a01b0382166111605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610888565b600081116111c25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610888565b6001600160a01b0383166000908152600260205260409020548111156112395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610888565b600b546001600160a01b038381169116148015906112655750600b546001600160a01b03848116911614155b801561127f5750600b54600160b01b900460ff1615156001145b1561128f57610ed18383836116bf565b30600090815260026020526040812054600954600b5491929083101591600160a01b900460ff161580156112d15750600b546001600160a01b03878116911614155b80156112da5750815b80156112ef5750600b54600160a81b900460ff165b156112fc576112fc610c3e565b600b546001600160a01b03868116911614801561133257506001600160a01b03861660009081526004602052604090205460ff16155b15611354576064846008546113479190611c53565b6113519190611c6a565b90505b600b546001600160a01b03878116911614801561138a57506001600160a01b03851660009081526004602052604090205460ff16155b156113ac5760648460075461139f9190611c53565b6113a99190611c6a565b90505b6113b68185611bf3565b935080156113c9576113c98630836116bf565b6113d4868686611760565b6113df8686866116bf565b505050505050565b6000546001600160a01b03163314610ba85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610888565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114c6576114c6611c8c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061151a5761151a611c8c565b60200260200101906001600160a01b031690816001600160a01b031681525050611565307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610f75565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906115ba908590600090869030904290600401611ce6565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161161d929190611d22565b60405180910390a15050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611676576040519150601f19603f3d011682016040523d82523d6000602084013e61167b565b606091505b5050905080610ed15760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610888565b6001600160a01b038316600090815260026020526040812080548392906116e7908490611bf3565b90915550506001600160a01b03821660009081526002602052604081208054839290611714908490611c06565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108d91815260200190565b600b54600160b81b900460ff1615610ed157600b546001600160a01b039081169084160361188d576001600160a01b0382166000908152600260205260408120546117ac908390611c06565b9050600c60009054906101000a90046001600160a01b03166001600160a01b0316631f34e7726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190611d43565b811061188b57600c54604051632dd2210d60e21b81526001600160a01b0385811660048301529091169063b748843490602401600060405180830381600087803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b505b600b546001600160a01b0390811690831603610ed1576001600160a01b0383166000908152600260205260408120546118c7908390611bf3565b600c54909150600160a01b900460ff16151560010361194457600c546040516302d5acb960e51b81526001600160a01b03868116600483015290911690635ab5972090602401600060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b50505050611a38565b600c54600160a01b900460ff161580156119d35750600c60009054906101000a90046001600160a01b03166001600160a01b0316631f34e7726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d09190611d43565b81105b15611a3857600c546040516302d5acb960e51b81526001600160a01b03868116600483015290911690635ab5972090602401600060405180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b505050505b50505050565b600060208083528351808285015260005b81811015611a6b57858101830151858201604001528201611a4f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f7257600080fd5b60008060408385031215611ab457600080fd5b8235611abf81611a8c565b946020939093013593505050565b600080600060608486031215611ae257600080fd5b8335611aed81611a8c565b92506020840135611afd81611a8c565b929592945050506040919091013590565b600060208284031215611b2057600080fd5b5035919050565b600060208284031215611b3957600080fd5b8135611b4481611a8c565b9392505050565b8015158114610f7257600080fd5b600060208284031215611b6b57600080fd5b8135611b4481611b4b565b60008060408385031215611b8957600080fd5b8235611b9481611a8c565b91506020830135611ba481611a8c565b809150509250929050565b60008060408385031215611bc257600080fd5b8235611bcd81611a8c565b91506020830135611ba481611b4b565b634e487b7160e01b600052601160045260246000fd5b8181038181111561080157610801611bdd565b8082018082111561080157610801611bdd565b600060208284031215611c2b57600080fd5b8151611b4481611a8c565b600060208284031215611c4857600080fd5b8151611b4481611b4b565b808202811582820484141761080157610801611bdd565b600082611c8757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015611cdb5781516001600160a01b031687529582019590820190600101611cb6565b509495945050505050565b85815284602082015260a060408201526000611d0560a0830186611ca2565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000611d3b6040830184611ca2565b949350505050565b600060208284031215611d5557600080fd5b505191905056fea2646970667358221220452dda89c77fb41e87abdb3216559f1a16f848ead5b0366ca39cfc7b3d4c348064736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005688f69c9cb53f5b09ab22dbacd7eb8d812274a1

-----Decoded View---------------
Arg [0] : _Distributor (address): 0x5688F69c9CB53F5B09Ab22dBAcD7Eb8d812274a1

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005688f69c9cb53f5b09ab22dbacd7eb8d812274a1


Deployed Bytecode Sourcemap

23290:11565:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24466:41;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24466:41:0;;;;;;;;;;;;:::i;:::-;;;;;;;;26882:193;;;;;;;;;;-1:-1:-1;26882:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;26882:193:0;1023:187:1;24878:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;24878:51:0;1215:230:1;25186:32:0;;;;;;;;;;-1:-1:-1;25186:32:0;;;;-1:-1:-1;;;25186:32:0;;;;;;26122:102;;;;;;;;;;-1:-1:-1;26202:14:0;;26122:102;;;1596:25:1;;;1584:2;1569:18;26122:102:0;1450:177:1;25227:31:0;;;;;;;;;;-1:-1:-1;25227:31:0;;;;-1:-1:-1;;;;;25227:31:0;;;25059:28;;;;;;;;;;-1:-1:-1;25059:28:0;;;;-1:-1:-1;;;25059:28:0;;;;;;27120:481;;;;;;;;;;-1:-1:-1;27120:481:0;;;;;:::i;:::-;;:::i;24661:26::-;;;;;;;;;;;;;;;;24560:35;;;;;;;;;;;;24593:2;24560:35;;;;;2494:4:1;2482:17;;;2464:36;;2452:2;2437:18;24560:35:0;2322:184:1;27651:297:0;;;;;;;;;;-1:-1:-1;27651:297:0;;;;;:::i;:::-;;:::i;32772:307::-;;;;;;;;;;-1:-1:-1;32772:307:0;;;;;:::i;:::-;;:::i;:::-;;24627:25;;;;;;;;;;;;;;;;24936:29;;;;;;;;;;-1:-1:-1;24936:29:0;;;;-1:-1:-1;;;;;24936:29:0;;;25094:41;;;;;;;;;;-1:-1:-1;25094:41:0;;;;-1:-1:-1;;;25094:41:0;;;;;;30255:183;;;;;;;;;;;;;:::i;32498:126::-;;;;;;;;;;-1:-1:-1;32498:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;32589:27:0;32565:4;32589:27;;;:18;:27;;;;;;;;;32498:126;33288:213;;;;;;;;;;-1:-1:-1;33288:213:0;;;;;:::i;:::-;;:::i;24802:29::-;;;;;;;;;;;;;;;;26232:117;;;;;;;;;;-1:-1:-1;26232:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;26325:16:0;26298:7;26325:16;;;:7;:16;;;;;;;26232:117;13013:103;;;;;;;;;;;;;:::i;33846:124::-;;;;;;;;;;-1:-1:-1;33846:124:0;;;;;:::i;:::-;;:::i;23407:101::-;;;;;;;;;;-1:-1:-1;23407:101:0;;;;-1:-1:-1;;;;;23407:101:0;;;23536:88;;;;;;;;;;;;23582:42;23536:88;;33509:109;;;;;;;;;;-1:-1:-1;33509:109:0;;;;;:::i;:::-;;:::i;12365:87::-;;;;;;;;;;-1:-1:-1;12411:7:0;12438:6;-1:-1:-1;;;;;12438:6:0;12365:87;;24514:39;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24514:39:0;;;;;27998:307;;;;;;;;;;-1:-1:-1;27998:307:0;;;;;:::i;:::-;;:::i;26399:199::-;;;;;;;;;;-1:-1:-1;26399:199:0;;;;;:::i;:::-;;:::i;31432:271::-;;;;;;;;;;;;;:::i;33626:103::-;;;;;;;;;;-1:-1:-1;33626:103:0;;;;;:::i;:::-;;:::i;33087:193::-;;;;;;;;;;-1:-1:-1;33087:193:0;;;;;:::i;:::-;;:::i;34292:236::-;;;;;;;;;;;;;:::i;24696:53::-;;;;;;;;;;;;;;;;25144:33;;;;;;;;;;-1:-1:-1;25144:33:0;;;;-1:-1:-1;;;25144:33:0;;;;;;26648:186;;;;;;;;;;-1:-1:-1;26648:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;26798:19:0;;;26766:7;26798:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;26648:186;32632:132;;;;;;;;;;-1:-1:-1;32632:132:0;;;;;:::i;:::-;;:::i;34605:247::-;;;;;;;;;;-1:-1:-1;34605:247:0;;;;;:::i;:::-;;:::i;25267:38::-;;;;;;;;;;-1:-1:-1;25267:38:0;;;;-1:-1:-1;;;25267:38:0;;;;;;33737:101;;;;;;;;;;-1:-1:-1;33737:101:0;;;;;:::i;:::-;;:::i;13271:238::-;;;;;;;;;;-1:-1:-1;13271:238:0;;;;;:::i;:::-;;:::i;26882:193::-;26984:4;27006:39;180:10;27029:7;27038:6;27006:8;:39::i;:::-;-1:-1:-1;27063:4:0;26882:193;;;;;:::o;27120:481::-;-1:-1:-1;;;;;27296:19:0;;27252:4;27296:19;;;:11;:19;;;;;;;;180:10;27296:33;;;;;;;;27362:26;;;;27340:116;;;;-1:-1:-1;;;27340:116:0;;4731:2:1;27340:116:0;;;4713:21:1;4770:2;4750:18;;;4743:30;4809:34;4789:18;;;4782:62;-1:-1:-1;;;4860:18:1;;;4853:38;4908:19;;27340:116:0;;;;;;;;;27467:36;27477:6;27485:9;27496:6;27467:9;:36::i;:::-;27514:57;27523:6;180:10;27545:25;27564:6;27545:16;:25;:::i;:::-;27514:8;:57::i;:::-;-1:-1:-1;27589:4:0;;27120:481;-1:-1:-1;;;;27120:481:0:o;27651:297::-;180:10;27766:4;27860:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;27860:34:0;;;;;;;;;;27766:4;;27788:130;;27838:7;;27860:47;;27897:10;;27860:47;:::i;32772:307::-;12251:13;:11;:13::i;:::-;32934:9:::1;32906:24;:37;;32884:126;;;::::0;-1:-1:-1;;;32884:126:0;;5535:2:1;32884:126:0::1;::::0;::::1;5517:21:1::0;5574:2;5554:18;;;5547:30;5613:34;5593:18;;;5586:62;-1:-1:-1;;;5664:18:1;;;5657:37;5711:19;;32884:126:0::1;5333:403:1::0;32884:126:0::1;33021:23;:50:::0;32772:307::o;30255:183::-;12251:13;:11;:13::i;:::-;30344:15:::1;-1:-1:-1::0;;;;;30344:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30326:55:0::1;;30390:4;30397:15;-1:-1:-1::0;;;;;30397:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30326:94;::::0;-1:-1:-1;;;;;;30326:94:0::1;::::0;;;;;;-1:-1:-1;;;;;6227:15:1;;;30326:94:0::1;::::0;::::1;6209:34:1::0;6279:15;;6259:18;;;6252:43;6144:18;;30326:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30310:13;:110:::0;;-1:-1:-1;;;;;;30310:110:0::1;-1:-1:-1::0;;;;;30310:110:0;;;::::1;::::0;;;::::1;::::0;;30255:183::o;33288:213::-;12251:13;:11;:13::i;:::-;-1:-1:-1;;;;;33380:30:0;::::1;33372:67;;;::::0;-1:-1:-1;;;33372:67:0;;6508:2:1;33372:67:0::1;::::0;::::1;6490:21:1::0;6547:2;6527:18;;;6520:30;6586:26;6566:18;;;6559:54;6630:18;;33372:67:0::1;6306:348:1::0;33372:67:0::1;33450:15;:43:::0;;-1:-1:-1;;;;;;33450:43:0::1;-1:-1:-1::0;;;;;33450:43:0;;;::::1;::::0;;;::::1;::::0;;33288:213::o;13013:103::-;12251:13;:11;:13::i;:::-;13078:30:::1;13105:1;13078:18;:30::i;:::-;13013:103::o:0;33846:124::-;12251:13;:11;:13::i;:::-;33922:11:::1;:40:::0;;-1:-1:-1;;;;;;33922:40:0::1;-1:-1:-1::0;;;;;33922:40:0;;;::::1;::::0;;;::::1;::::0;;33846:124::o;33509:109::-;12251:13;:11;:13::i;:::-;33581:19:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;33581:29:0::1;-1:-1:-1::0;;;;33581:29:0;;::::1;::::0;;;::::1;::::0;;33509:109::o;27998:307::-;180:10;28118:4;28212:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28212:34:0;;;;;;;;;;28118:4;;28140:135;;28190:7;;28212:52;;28249:15;;28212:52;:::i;26399:199::-;26504:4;26526:42;180:10;26550:9;26561:6;26526:9;:42::i;31432:271::-;25348:16;:23;;-1:-1:-1;;;;25348:23:0;-1:-1:-1;;;25348:23:0;;;31530:4:::1;-1:-1:-1::0;26325:16:0;;;:7;:16;;;;;;31490:46:::1;;31549:29;31566:11;31549:16;:29::i;:::-;31667:15;::::0;31612:21:::1;::::0;31646:49:::1;::::0;-1:-1:-1;;;;;31667:15:0::1;31612:21:::0;31646:20:::1;:49::i;:::-;-1:-1:-1::0;;25394:16:0;:24;;-1:-1:-1;;;;25394:24:0;;;31432:271::o;33626:103::-;12251:13;:11;:13::i;:::-;33697:14:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;33697:24:0::1;-1:-1:-1::0;;;;33697:24:0;;::::1;::::0;;;::::1;::::0;;33626:103::o;33087:193::-;12251:13;:11;:13::i;:::-;33199:8:::1;33174:33;;:21;;;;;;;;;;;:33;;::::0;33166:63:::1;;;::::0;-1:-1:-1;;;33166:63:0;;6861:2:1;33166:63:0::1;::::0;::::1;6843:21:1::0;6900:2;6880:18;;;6873:30;-1:-1:-1;;;6919:18:1;;;6912:47;6976:18;;33166:63:0::1;6659:341:1::0;33166:63:0::1;33240:21;:32:::0;;;::::1;;-1:-1:-1::0;;;33240:32:0::1;-1:-1:-1::0;;;;33240:32:0;;::::1;::::0;;;::::1;::::0;;33087:193::o;34292:236::-;12251:13;:11;:13::i;:::-;34433:15:::1;::::0;34425:52:::1;::::0;34377:21:::1;::::0;34356:18:::1;::::0;-1:-1:-1;;;;;34433:15:0;;::::1;::::0;34377:21;;34356:18;34425:52;34356:18;34425:52;34377:21;34433:15;34425:52:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34409:68;;;34496:4;34488:32;;;::::0;-1:-1:-1;;;34488:32:0;;7417:2:1;34488:32:0::1;::::0;::::1;7399:21:1::0;7456:2;7436:18;;;7429:30;-1:-1:-1;;;7475:18:1;;;7468:45;7530:18;;34488:32:0::1;7215:339:1::0;34488:32:0::1;34345:183;;34292:236::o:0;32632:132::-;12251:13;:11;:13::i;:::-;-1:-1:-1;;;;;32717:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:37;;-1:-1:-1;;32717:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32632:132::o;34605:247::-;12251:13;:11;:13::i;:::-;34776:15:::1;::::0;34745:56:::1;::::0;-1:-1:-1;;;34745:56:0;;-1:-1:-1;;;;;34776:15:0;;::::1;34745:56;::::0;::::1;7741:51:1::0;7808:18;;;7801:34;;;34733:9:0::1;::::0;34745:30;::::1;::::0;::::1;::::0;7714:18:1;;34745:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34733:68;;34820:4;34812:32;;;::::0;-1:-1:-1;;;34812:32:0;;7417:2:1;34812:32:0::1;::::0;::::1;7399:21:1::0;7456:2;7436:18;;;7429:30;-1:-1:-1;;;7475:18:1;;;7468:45;7530:18;;34812:32:0::1;7215:339:1::0;34812:32:0::1;34722:130;34605:247:::0;;:::o;33737:101::-;12251:13;:11;:13::i;:::-;33807::::1;:23:::0;;;::::1;;-1:-1:-1::0;;;33807:23:0::1;-1:-1:-1::0;;;;33807:23:0;;::::1;::::0;;;::::1;::::0;;33737:101::o;13271:238::-;12251:13;:11;:13::i;:::-;-1:-1:-1;;;;;13374:22:0;::::1;13352:110;;;::::0;-1:-1:-1;;;13352:110:0;;8298:2:1;13352:110:0::1;::::0;::::1;8280:21:1::0;8337:2;8317:18;;;8310:30;8376:34;8356:18;;;8349:62;-1:-1:-1;;;8427:18:1;;;8420:36;8473:19;;13352:110:0::1;8096:402:1::0;13352:110:0::1;13473:28;13492:8;13473:18;:28::i;:::-;13271:238:::0;:::o;28337:375::-;-1:-1:-1;;;;;28465:20:0;;28457:69;;;;-1:-1:-1;;;28457:69:0;;8705:2:1;28457:69:0;;;8687:21:1;8744:2;8724:18;;;8717:30;8783:34;8763:18;;;8756:62;-1:-1:-1;;;8834:18:1;;;8827:34;8878:19;;28457:69:0;8503:400:1;28457:69:0;-1:-1:-1;;;;;28545:21:0;;28537:68;;;;-1:-1:-1;;;28537:68:0;;9110:2:1;28537:68:0;;;9092:21:1;9149:2;9129:18;;;9122:30;9188:34;9168:18;;;9161:62;-1:-1:-1;;;9239:18:1;;;9232:32;9281:19;;28537:68:0;8908:398:1;28537:68:0;-1:-1:-1;;;;;28618:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;28671:33;;1596:25:1;;;28671:33:0;;1569:18:1;28671:33:0;;;;;;;;28337:375;;;:::o;28720:1527::-;-1:-1:-1;;;;;28842:18:0;;28834:68;;;;-1:-1:-1;;;28834:68:0;;9513:2:1;28834:68:0;;;9495:21:1;9552:2;9532:18;;;9525:30;9591:34;9571:18;;;9564:62;-1:-1:-1;;;9642:18:1;;;9635:35;9687:19;;28834:68:0;9311:401:1;28834:68:0;-1:-1:-1;;;;;28921:16:0;;28913:64;;;;-1:-1:-1;;;28913:64:0;;9919:2:1;28913:64:0;;;9901:21:1;9958:2;9938:18;;;9931:30;9997:34;9977:18;;;9970:62;-1:-1:-1;;;10048:18:1;;;10041:33;10091:19;;28913:64:0;9717:399:1;28913:64:0;29005:1;28996:6;:10;28988:64;;;;-1:-1:-1;;;28988:64:0;;10323:2:1;28988:64:0;;;10305:21:1;10362:2;10342:18;;;10335:30;10401:34;10381:18;;;10374:62;-1:-1:-1;;;10452:18:1;;;10445:39;10501:19;;28988:64:0;10121:405:1;28988:64:0;-1:-1:-1;;;;;29085:13:0;;;;;;:7;:13;;;;;;:23;-1:-1:-1;29085:23:0;29063:111;;;;-1:-1:-1;;;29063:111:0;;10733:2:1;29063:111:0;;;10715:21:1;10772:2;10752:18;;;10745:30;10811:34;10791:18;;;10784:62;-1:-1:-1;;;10862:18:1;;;10855:36;10908:19;;29063:111:0;10531:402:1;29063:111:0;29211:13;;-1:-1:-1;;;;;29205:19:0;;;29211:13;;29205:19;;;;:57;;-1:-1:-1;29249:13:0;;-1:-1:-1;;;;;29241:21:0;;;29249:13;;29241:21;;29205:57;:96;;;;-1:-1:-1;29279:14:0;;-1:-1:-1;;;29279:14:0;;;;:22;;29297:4;29279:22;29205:96;29187:192;;;29335:32;29350:4;29356:2;29360:6;29335:14;:32::i;29187:192::-;29440:4;29391:28;26325:16;;;:7;:16;;;;;;29527:23;;29608:16;;26325;;29490:60;;;;;-1:-1:-1;;;29608:16:0;;;;29607:17;:55;;;;-1:-1:-1;29649:13:0;;-1:-1:-1;;;;;29641:21:0;;;29649:13;;29641:21;;29607:55;:95;;;;;29679:23;29607:95;:133;;;;-1:-1:-1;29719:21:0;;-1:-1:-1;;;29719:21:0;;;;29607:133;29589:206;;;29767:16;:14;:16::i;:::-;29815:13;;-1:-1:-1;;;;;29809:19:0;;;29815:13;;29809:19;:48;;;;-1:-1:-1;;;;;;29833:24:0;;;;;;:18;:24;;;;;;;;29832:25;29809:48;29805:111;;;29901:3;29891:6;29881:7;;:16;;;;:::i;:::-;29880:24;;;;:::i;:::-;29874:30;;29805:111;29938:13;;-1:-1:-1;;;;;29930:21:0;;;29938:13;;29930:21;:48;;;;-1:-1:-1;;;;;;29956:22:0;;;;;;:18;:22;;;;;;;;29955:23;29930:48;29926:110;;;30021:3;30011:6;30002;;:15;;;;:::i;:::-;30001:23;;;;:::i;:::-;29995:29;;29926:110;30046:13;30056:3;30046:13;;:::i;:::-;;-1:-1:-1;30074:7:0;;30070:80;;30098:40;30113:4;30127;30134:3;30098:14;:40::i;:::-;30160:36;30179:4;30185:2;30189:6;30160:18;:36::i;:::-;30207:32;30222:4;30228:2;30232:6;30207:14;:32::i;:::-;28823:1424;;;28720:1527;;;:::o;12530:132::-;12411:7;12438:6;-1:-1:-1;;;;;12438:6:0;180:10;12594:23;12586:68;;;;-1:-1:-1;;;12586:68:0;;11535:2:1;12586:68:0;;;11517:21:1;;;11554:18;;;11547:30;11613:34;11593:18;;;11586:62;11665:18;;12586:68:0;11333:356:1;13669:191:0;13743:16;13762:6;;-1:-1:-1;;;;;13779:17:0;;;-1:-1:-1;;;;;;13779:17:0;;;;;;13812:40;;13762:6;;;;;;;13812:40;;13743:16;13812:40;13732:128;13669:191;:::o;31711:518::-;31810:16;;;31824:1;31810:16;;;;;;;;31786:21;;31810:16;;;;;;;;;;-1:-1:-1;31810:16:0;31786:40;;31855:4;31837;31842:1;31837:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31837:23:0;;;-1:-1:-1;;;;;31837:23:0;;;;;31881:4;31871;31876:1;31871:7;;;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;31871:14:0;;;-1:-1:-1;;;;;31871:14:0;;;;;31896:62;31913:4;31928:15;31946:11;31896:8;:62::i;:::-;31971:197;;-1:-1:-1;;;31971:197:0;;-1:-1:-1;;;;;31971:15:0;:66;;;;:197;;32052:11;;32078:1;;32095:4;;32122;;32142:15;;31971:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32186:35;32203:11;32216:4;32186:35;;;;;;;:::i;:::-;;;;;;;;31766:463;31711:518;:::o;33978:207::-;34085:9;34100;-1:-1:-1;;;;;34100:14:0;34122:6;34100:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34084:49;;;34152:4;34144:33;;;;-1:-1:-1;;;34144:33:0;;13550:2:1;34144:33:0;;;13532:21:1;13589:2;13569:18;;;13562:30;-1:-1:-1;;;13608:18:1;;;13601:46;13664:18;;34144:33:0;13348:340:1;32237:253:0;-1:-1:-1;;;;;32365:15:0;;;;;;:7;:15;;;;;:25;;32384:6;;32365:15;:25;;32384:6;;32365:25;:::i;:::-;;;;-1:-1:-1;;;;;;;32401:18:0;;;;;;:7;:18;;;;;:28;;32423:6;;32401:18;:28;;32423:6;;32401:28;:::i;:::-;;;;;;;;32464:9;-1:-1:-1;;;;;32447:35:0;32456:6;-1:-1:-1;;;;;32447:35:0;;32475:6;32447:35;;;;1596:25:1;;1584:2;1569:18;;1450:177;30446:978:0;30577:13;;-1:-1:-1;;;30577:13:0;;;;30573:844;;;30645:13;;-1:-1:-1;;;;;30645:13:0;;;30636:22;;;;30632:260;;-1:-1:-1;;;;;26325:16:0;;30679:19;26325:16;;;:7;:16;;;;;;30701:24;;30718:7;;30701:24;:::i;:::-;30679:46;;30765:11;;;;;;;;;-1:-1:-1;;;;;30765:11:0;-1:-1:-1;;;;;30765:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30750:11;:48;30746:131;;30823:11;;:34;;-1:-1:-1;;;30823:34:0;;-1:-1:-1;;;;;1406:32:1;;;30823:34:0;;;1388:51:1;30823:11:0;;;;:29;;1361:18:1;;30823:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30746:131;30660:232;30632:260;30945:13;;-1:-1:-1;;;;;30945:13:0;;;30938:20;;;;30934:472;;-1:-1:-1;;;;;26325:16:0;;30979:19;26325:16;;;:7;:16;;;;;;31001:26;;31020:7;;31001:26;:::i;:::-;31052:19;;30979:48;;-1:-1:-1;;;;31052:19:0;;;;:27;;31075:4;31052:27;31048:343;;31104:11;;:36;;-1:-1:-1;;;31104:36:0;;-1:-1:-1;;;;;1406:32:1;;;31104:36:0;;;1388:51:1;31104:11:0;;;;:29;;1361:18:1;;31104:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31048:343;;;31192:19;;-1:-1:-1;;;31192:19:0;;;;:28;;;:100;;;31259:11;;;;;;;;;-1:-1:-1;;;;;31259:11:0;-1:-1:-1;;;;;31259:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31245:11;:47;31192:100;31166:225;;;31335:11;;:36;;-1:-1:-1;;;31335:36:0;;-1:-1:-1;;;;;1406:32:1;;;31335:36:0;;;1388:51:1;31335:11:0;;;;:29;;1361:18:1;;31335:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31166:225;30960:446;30446:978;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1861:456::-;1938:6;1946;1954;2007:2;1995:9;1986:7;1982:23;1978:32;1975:52;;;2023:1;2020;2013:12;1975:52;2062:9;2049:23;2081:31;2106:5;2081:31;:::i;:::-;2131:5;-1:-1:-1;2188:2:1;2173:18;;2160:32;2201:33;2160:32;2201:33;:::i;:::-;1861:456;;2253:7;;-1:-1:-1;;;2307:2:1;2292:18;;;;2279:32;;1861:456::o;2511:180::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;-1:-1:-1;2662:23:1;;2511:180;-1:-1:-1;2511:180:1:o;2904:247::-;2963:6;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;3071:9;3058:23;3090:31;3115:5;3090:31;:::i;:::-;3140:5;2904:247;-1:-1:-1;;;2904:247:1:o;3380:118::-;3466:5;3459:13;3452:21;3445:5;3442:32;3432:60;;3488:1;3485;3478:12;3503:241;3559:6;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;3667:9;3654:23;3686:28;3708:5;3686:28;:::i;3749:388::-;3817:6;3825;3878:2;3866:9;3857:7;3853:23;3849:32;3846:52;;;3894:1;3891;3884:12;3846:52;3933:9;3920:23;3952:31;3977:5;3952:31;:::i;:::-;4002:5;-1:-1:-1;4059:2:1;4044:18;;4031:32;4072:33;4031:32;4072:33;:::i;:::-;4124:7;4114:17;;;3749:388;;;;;:::o;4142:382::-;4207:6;4215;4268:2;4256:9;4247:7;4243:23;4239:32;4236:52;;;4284:1;4281;4274:12;4236:52;4323:9;4310:23;4342:31;4367:5;4342:31;:::i;:::-;4392:5;-1:-1:-1;4449:2:1;4434:18;;4421:32;4462:30;4421:32;4462:30;:::i;4938:127::-;4999:10;4994:3;4990:20;4987:1;4980:31;5030:4;5027:1;5020:15;5054:4;5051:1;5044:15;5070:128;5137:9;;;5158:11;;;5155:37;;;5172:18;;:::i;5203:125::-;5268:9;;;5289:10;;;5286:36;;;5302:18;;:::i;5741:251::-;5811:6;5864:2;5852:9;5843:7;5839:23;5835:32;5832:52;;;5880:1;5877;5870:12;5832:52;5912:9;5906:16;5931:31;5956:5;5931:31;:::i;7846:245::-;7913:6;7966:2;7954:9;7945:7;7941:23;7937:32;7934:52;;;7982:1;7979;7972:12;7934:52;8014:9;8008:16;8033:28;8055:5;8033:28;:::i;10938:168::-;11011:9;;;11042;;11059:15;;;11053:22;;11039:37;11029:71;;11080:18;;:::i;11111:217::-;11151:1;11177;11167:132;;11221:10;11216:3;11212:20;11209:1;11202:31;11256:4;11253:1;11246:15;11284:4;11281:1;11274:15;11167:132;-1:-1:-1;11313:9:1;;11111:217::o;11826:127::-;11887:10;11882:3;11878:20;11875:1;11868:31;11918:4;11915:1;11908:15;11942:4;11939:1;11932:15;11958:461;12011:3;12049:5;12043:12;12076:6;12071:3;12064:19;12102:4;12131:2;12126:3;12122:12;12115:19;;12168:2;12161:5;12157:14;12189:1;12199:195;12213:6;12210:1;12207:13;12199:195;;;12278:13;;-1:-1:-1;;;;;12274:39:1;12262:52;;12334:12;;;;12369:15;;;;12310:1;12228:9;12199:195;;;-1:-1:-1;12410:3:1;;11958:461;-1:-1:-1;;;;;11958:461:1:o;12424:582::-;12723:6;12712:9;12705:25;12766:6;12761:2;12750:9;12746:18;12739:34;12809:3;12804:2;12793:9;12789:18;12782:31;12686:4;12830:57;12882:3;12871:9;12867:19;12859:6;12830:57;:::i;:::-;-1:-1:-1;;;;;12923:32:1;;;;12918:2;12903:18;;12896:60;-1:-1:-1;12987:3:1;12972:19;12965:35;12822:65;12424:582;-1:-1:-1;;;12424:582:1:o;13011:332::-;13218:6;13207:9;13200:25;13261:2;13256;13245:9;13241:18;13234:30;13181:4;13281:56;13333:2;13322:9;13318:18;13310:6;13281:56;:::i;:::-;13273:64;13011:332;-1:-1:-1;;;;13011:332:1:o;13693:184::-;13763:6;13816:2;13804:9;13795:7;13791:23;13787:32;13784:52;;;13832:1;13829;13822:12;13784:52;-1:-1:-1;13855:16:1;;13693:184;-1:-1:-1;13693:184:1:o

Swarm Source

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