BNB Price: $614.01 (+0.86%)
 

Overview

Max Total Supply

100,000,000,000GMEX

Holders

9,481 (0.00%)

Transfers

-
0

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

$4,977,000.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Game Coin aims to allow any athlete in the world the ability to create their own sports token. These athletes will be on a new type of social media platform that allows token holders the ability to speculate on these athletes through tokenization.


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
GMEX

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at BscScan.com on 2021-11-02
*/

/**
 *Submitted for verification at BscScan.com on 2021-06-23
 */

/*

Every transaction consumes your $GMEX:

  2% auto distributed back to $GMEX holders
  5% transferred to charity wallet (denominated in BNB)

*/

pragma solidity 0.6.12;

// SPDX-License-Identifier: Unlicensed
interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

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

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

/**
 * @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
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

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

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

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

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

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

/**
 * @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.
 */
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

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

    function getUnlockTime() external view returns (uint256) {
        return _lockTime;
    }

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

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

// pragma solidity >=0.5.0;

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

// pragma solidity >=0.5.0;

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 Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

// pragma solidity >=0.6.2;

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

contract GMEX is Context, IERC20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    address[] public airdropWinners;
    uint256[] public airdropAmount;
    mapping(address => bool) private _isExcludedFromFee;

    mapping(address => bool) private _isExcluded;
    mapping(address => uint256) public liquidityAddedTime;
    address[] private _excluded;
    mapping(address => bool) private _isBlackListedBot;
    address[] private _blackListedBots;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000 * 10**1 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = "Game Coin";
    string private constant _symbol = "GMEX";
    uint8 private constant _decimals = 9;

    uint256 public _taxFee = 2;
    uint256 private _previousTaxFee = _taxFee;

    uint256 public _charityfee = 5;
    uint256 private _previousLiquidityFee = _charityfee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address payable public _charityWalletAddress;
    // address payable public _marketingWalletAddress;

    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

   
    uint256 public numTokensSellToAddToLiquidity = 30000000 * 10**1 * 10**9;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped);

    event excludedFromFee(address user);
    event includedInFee(address user);
    event setTaxFeePercent(uint256 fee);
    event setCharityFeePercent(uint256 fee);
    event setCharityWallet(address wallet);
    event setMarketingWallet(address wallet);
    event SetnumTokensSellToAddToLiquidity(uint256 amount);

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

    // removed marketing wallet from constructor arguement

    constructor(address payable charityWalletAddress) public {
         require(
            charityWalletAddress != address(0),
            "CharityWallet is zero address"
        );
        _charityWalletAddress = charityWalletAddress;
        // _marketingWalletAddress = marketingWalletAddress;
        _rOwned[_msgSender()] = _rTotal;

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

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

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

        //blacklist bots

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

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

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

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

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

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

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

    function name() external pure returns (string memory) {
        return _name;
    }

    function symbol() external pure returns (string memory) {
        return _symbol;
    }

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

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

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

    //function to transfer the tokens

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

    //checks the number of tokens that belong to the owner could be spent by the spender

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

    //approve someone to spend your tokens

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

    //could be used to transfer funds on someone else's behalf

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

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

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

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

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

    //any users can donate directly to the funds distributed as rewards

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

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

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

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

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

    function addBotToBlacklist(address account) external onlyOwner {
        require(
            account != 0x10ED43C718714eb63d5aA57B78B54704E256024E,
            "We cannot blacklist PancakeSwap router"
        );
        require(!_isBlackListedBot[account], "Account is already blacklisted");
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }

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

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

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
        emit excludedFromFee(account);
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
        emit includedInFee(account);
    }

    function _setTaxFeePercent(uint256 taxFee) external onlyOwner {
        _taxFee = taxFee;
        emit setTaxFeePercent(taxFee);
    }

    function _setCharityFeePercent(uint256 liquidityFee) external onlyOwner {
        _charityfee = liquidityFee;
        emit setCharityFeePercent(liquidityFee);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setnumTokensSellToAddToLiquidity(uint256 Amount)
        external
        onlyOwner
    {
        numTokensSellToAddToLiquidity = Amount;
        emit SetnumTokensSellToAddToLiquidity(Amount);
    }

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

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

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

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tCharity = calculateCharityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tCharity);
        return (tTransferAmount, tFee, tCharity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tCharity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rCharity = tCharity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rCharity);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

    function _takeCharityfee(uint256 tCharity) private {
        uint256 currentRate = _getRate();
        uint256 rCharity = tCharity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rCharity);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tCharity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**2);
    }

    function calculateCharityFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(_charityfee).div(10**2);
    }

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

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _charityfee;

        _taxFee = 0;
        _charityfee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _charityfee = _previousLiquidityFee;
    }

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

    function _setCharityWallet(address payable charityWalletAddress)
        external
        onlyOwner
    {
        require(
            charityWalletAddress != address(0),
            "new charityWallet is the zero address"
        );
        _charityWalletAddress = charityWalletAddress;
        emit setCharityWallet(charityWalletAddress);
    }

    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(!_isBlackListedBot[to], "You are blacklisted");
        require(!_isBlackListedBot[msg.sender], "You are blacklisted");
        require(!_isBlackListedBot[tx.origin], "You are blacklisted");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

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

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

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        sendBNBToCharity(contractTokenBalance);

        emit SwapAndLiquify(contractTokenBalance);
    }

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

        _approve(address(this), address(uniswapV2Router), uint256(-1));

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function sendBNBToCharity(uint256 amount) private {
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(amount);
        uint256 newBalance = address(this).balance.sub(initialBalance);
        _charityWalletAddress.transfer(newBalance);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takefee
    ) private {
        if (!takefee) removeAllFee();

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

        if (!takefee) restoreAllFee();
    }

    // airdrop functionality, owner enters an array of holders and the total amount he wants to distribute

    function airdrop(address[] memory users, uint256[] memory amount)
        external
        onlyOwner
    {
        airdropWinners = users;
        airdropAmount = amount;
        for (uint256 i = 0; i < users.length; i++) {
            _tokenTransfer(msg.sender, users[i], amount[i], false);
        }
    }

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

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

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tCharity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeCharityfee(tCharity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function withdrawTokens(IERC20 token, address wallet) external onlyOwner{
         uint256 balanceOfContract = token.balanceOf(address(this));
        token.transfer(wallet,balanceOfContract);
    }
    
    function withdrawFunds(address wallet) external onlyOwner{
        uint256 balanceOfContract = address(this).balance;
        payable(wallet).transfer(balanceOfContract);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","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":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"amount","type":"uint256"}],"name":"SetnumTokensSellToAddToLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","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":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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"excludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"includedInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setCharityFeePercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"setCharityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTaxFeePercent","type":"event"},{"inputs":[],"name":"_charityWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"_setCharityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"}],"name":"_setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"airdropAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"airdropWinners","outputs":[{"internalType":"address","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityAddedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"setnumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"wallet","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405268031f237e1a955fffff19600f5560026011819055601255600560138190556014556015805460ff60a81b1916600160a81b179055670429d069189e00006016553480156200005257600080fd5b5060405162003af538038062003af5833981810160405260208110156200007857600080fd5b5051600062000086620005d8565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016003556001600160a01b03811662000131576040805162461bcd60e51b815260206004820152601d60248201527f4368617269747957616c6c6574206973207a65726f2061646472657373000000604482015290519081900360640190fd5b601580546001600160a01b0319166001600160a01b038316179055600f54600460006200015d620005d8565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060007305ff2b0db69458a0750badebc4f9e13add608c7f9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001d457600080fd5b505afa158015620001e9573d6000803e3d6000fd5b505050506040513d60208110156200020057600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200025157600080fd5b505afa15801562000266573d6000803e3d6000fd5b505050506040513d60208110156200027d57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002d057600080fd5b505af1158015620002e5573d6000803e3d6000fd5b505050506040513d6020811015620002fc57600080fd5b50516001600160601b0319606091821b811660a0529082901b1660805260016009600062000329620005dc565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260098352908120805484166001908117909155600d9092527f63d1a01db90424fb77a60e6bea5629726fd456ab6430ae225aac23c24b9dfa4e8054841683179055600e805480840182557fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd90810180546001600160a01b0319908116736b4b14f7905e896d5ce38b6fbe32f2dc08dc664e179091557fc260490be4685c68743b2b71587dd50e9a266d122938b73a9a844faf1261688080548716861790558254808601845582018054821673899d49c99d9bd5086e327c1347a5f564b3a2910a1790557fd07a2c9fd88b45a93af536989207468b89d5d45d4d41173700586ab4bf63fbf080548716861790558254808601845582018054821673dead926ec0809ba1f42b010dab4fb9762671bff41790557f4cde30842117b929337e0cd6beca85dd317dd888773258599969b7b0ce09189e8054871686179055825480860184558201805482167311be13c352bd3f4fee81ef21bb9efc2a0c7baa0c1790557fbf8385c3144949a96c2cbad190df18322d0bd4609190946f0b38e6a695c6020e80548716861790558254808601845582018054821673c27265362aa001b275936477553d026da96d73471790557f1916f010fb5f77d4fd2bde0d54179ddbc9e7501154c2116dee1931d6e7951437805490961685179095558154938401825591520180549091166e05097d5e39c113a3c7ab508fe5ead41790556200057c620005d8565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040518082815260200191505060405180910390a35050620005eb565b3390565b6000546001600160a01b031690565b60805160601c60a05160601c6134cc6200062960003980611398528061245c525080610c1d5280612fa5528061305d528061308652506134cc6000f3fe6080604052600436106102815760003560e01c8063602bc62b1161014f578063a522ad25116100c1578063d047e4b71161007a578063d047e4b714610a9a578063d12a768814610acd578063dd46706414610ae2578063dd62ed3e14610b0c578063ea2f0b3714610b47578063f2fde38b14610b7a57610288565b8063a522ad2514610988578063a69df4b5146109c3578063a9059cbb146109d8578063b030b34a14610a11578063c49b9a8014610a44578063c8b55b9414610a7057610288565b806388f820201161011357806388f820201461089e5780638da5cb5b146108d15780638ddca183146108e657806395d89b4114610910578063a457c2d714610925578063a4d5a3a51461095e57610288565b8063602bc62b146106da57806367243482146106ef57806368742da61461082357806370a082311461085657806376d4ab991461088957610288565b806331e54834116101f35780634549b039116101ac5780634549b039146105e557806349bd5a5e146106175780634a74bb021461062c57806352390c02146106415780635342acb414610674578063594da156146106a757610288565b806331e54834146104f25780633685d41914610507578063395093511461053a5780633b124fe7146105735780633bd5d17314610588578063437823ec146105b257610288565b806318160ddd1161024557806318160ddd146103e65780631d7ef879146103fb57806323b872dd146104305780632549c791146104735780632d8381191461049d578063313ce567146104c757610288565b8063055a82c91461028d57806306fdde03146102d3578063095ea7b31461035d57806313114a9d146103aa5780631694505e146103d157610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b7600480360360208110156102b057600080fd5b5035610bad565b604080516001600160a01b039092168252519081900360200190f35b3480156102df57600080fd5b506102e8610bd4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032257818101518382015260200161030a565b50505050905090810190601f16801561034f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036957600080fd5b506103966004803603604081101561038057600080fd5b506001600160a01b038135169060200135610bf7565b604080519115158252519081900360200190f35b3480156103b657600080fd5b506103bf610c15565b60408051918252519081900360200190f35b3480156103dd57600080fd5b506102b7610c1b565b3480156103f257600080fd5b506103bf610c3f565b34801561040757600080fd5b5061042e6004803603602081101561041e57600080fd5b50356001600160a01b0316610c4c565b005b34801561043c57600080fd5b506103966004803603606081101561045357600080fd5b506001600160a01b03813581169160208101359091169060400135610dd4565b34801561047f57600080fd5b5061042e6004803603602081101561049657600080fd5b5035610e5b565b3480156104a957600080fd5b506103bf600480360360208110156104c057600080fd5b5035610eee565b3480156104d357600080fd5b506104dc610f50565b6040805160ff9092168252519081900360200190f35b3480156104fe57600080fd5b506103bf610f55565b34801561051357600080fd5b5061042e6004803603602081101561052a57600080fd5b50356001600160a01b0316610f5b565b34801561054657600080fd5b506103966004803603604081101561055d57600080fd5b506001600160a01b03813516906020013561111c565b34801561057f57600080fd5b506103bf61116a565b34801561059457600080fd5b5061042e600480360360208110156105ab57600080fd5b5035611170565b3480156105be57600080fd5b5061042e600480360360208110156105d557600080fd5b50356001600160a01b031661124a565b3480156105f157600080fd5b506103bf6004803603604081101561060857600080fd5b508035906020013515156112fd565b34801561062357600080fd5b506102b7611396565b34801561063857600080fd5b506103966113ba565b34801561064d57600080fd5b5061042e6004803603602081101561066457600080fd5b50356001600160a01b03166113ca565b34801561068057600080fd5b506103966004803603602081101561069757600080fd5b50356001600160a01b0316611550565b3480156106b357600080fd5b506103bf600480360360208110156106ca57600080fd5b50356001600160a01b031661156e565b3480156106e657600080fd5b506103bf611580565b3480156106fb57600080fd5b5061042e6004803603604081101561071257600080fd5b81019060208101813564010000000081111561072d57600080fd5b82018360208201111561073f57600080fd5b8035906020019184602083028401116401000000008311171561076157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156107b157600080fd5b8201836020820111156107c357600080fd5b803590602001918460208302840111640100000000831117156107e557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611586945050505050565b34801561082f57600080fd5b5061042e6004803603602081101561084657600080fd5b50356001600160a01b0316611652565b34801561086257600080fd5b506103bf6004803603602081101561087957600080fd5b50356001600160a01b03166116e2565b34801561089557600080fd5b506102b7611744565b3480156108aa57600080fd5b50610396600480360360208110156108c157600080fd5b50356001600160a01b0316611753565b3480156108dd57600080fd5b506102b7611771565b3480156108f257600080fd5b5061042e6004803603602081101561090957600080fd5b5035611780565b34801561091c57600080fd5b506102e8611813565b34801561093157600080fd5b506103966004803603604081101561094857600080fd5b506001600160a01b038135169060200135611831565b34801561096a57600080fd5b506103bf6004803603602081101561098157600080fd5b5035611899565b34801561099457600080fd5b5061042e600480360360408110156109ab57600080fd5b506001600160a01b03813581169160200135166118b7565b3480156109cf57600080fd5b5061042e611a11565b3480156109e457600080fd5b50610396600480360360408110156109fb57600080fd5b506001600160a01b038135169060200135611afb565b348015610a1d57600080fd5b5061042e60048036036020811015610a3457600080fd5b50356001600160a01b0316611b0f565b348015610a5057600080fd5b5061042e60048036036020811015610a6757600080fd5b50351515611c9c565b348015610a7c57600080fd5b5061042e60048036036020811015610a9357600080fd5b5035611d47565b348015610aa657600080fd5b5061042e60048036036020811015610abd57600080fd5b50356001600160a01b0316611dda565b348015610ad957600080fd5b506103bf611ecb565b348015610aee57600080fd5b5061042e60048036036020811015610b0557600080fd5b5035611ed1565b348015610b1857600080fd5b506103bf60048036036040811015610b2f57600080fd5b506001600160a01b0381358116916020013516611f81565b348015610b5357600080fd5b5061042e60048036036020811015610b6a57600080fd5b50356001600160a01b0316611fac565b348015610b8657600080fd5b5061042e60048036036020811015610b9d57600080fd5b50356001600160a01b031661205c565b60078181548110610bba57fe5b6000918252602090912001546001600160a01b0316905081565b60408051808201909152600981526823b0b6b29021b7b4b760b91b602082015290565b6000610c0b610c04612154565b8484612158565b5060015b92915050565b60105490565b7f000000000000000000000000000000000000000000000000000000000000000081565b68056bc75e2d6310000090565b610c54612154565b6000546001600160a01b03908116911614610ca4576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b7310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0382161415610d005760405162461bcd60e51b815260040180806020018281038252602681526020018061326a6026913960400191505060405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff1615610d6e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600d60205260408120805460ff19166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319169091179055565b6000610de1848484612244565b610e5184610ded612154565b610e4c85604051806060016040528060288152602001613348602891396001600160a01b038a16600090815260066020526040812090610e2b612154565b6001600160a01b031681526020810191909152604001600020549190612518565b612158565b5060019392505050565b610e63612154565b6000546001600160a01b03908116911614610eb3576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60118190556040805182815290517f061c82d006233d9a0e9250bcc6cdf14fb913d09ca3ab9b6b5a838934835a6dab9181900360200190a150565b6000600f54821115610f315760405162461bcd60e51b815260040180806020018281038252602a815260200180613290602a913960400191505060405180910390fd5b6000610f3b6125af565b9050610f4783826125d2565b9150505b919050565b600990565b60135481565b610f63612154565b6000546001600160a01b03908116911614610fb3576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600a602052604090205460ff16611020576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b600c5481101561111857816001600160a01b0316600c828154811061104457fe5b6000918252602090912001546001600160a01b0316141561111057600c8054600019810190811061107157fe5b600091825260209091200154600c80546001600160a01b03909216918390811061109757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600c8054806110e957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611118565b600101611023565b5050565b6000610c0b611129612154565b84610e4c856006600061113a612154565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061261b565b60115481565b600061117a612154565b6001600160a01b0381166000908152600a602052604090205490915060ff16156111d55760405162461bcd60e51b815260040180806020018281038252602c815260200180613423602c913960400191505060405180910390fd5b60006111e083612675565b505050506001600160a01b03841660009081526004602052604090205491925061120c919050826126c4565b6001600160a01b038316600090815260046020526040902055600f5461123290826126c4565b600f55601054611242908461261b565b601055505050565b611252612154565b6000546001600160a01b039081169116146112a2576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260096020908152604091829020805460ff19166001179055815192835290517f85ecafd7b8cfcceb72ea6978547a39f89631bf423eea19a63ce8d3881ec51e039281900390910190a150565b600068056bc75e2d6310000083111561135d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161137c57600061136d84612675565b50939550610c0f945050505050565b600061138784612675565b50929550610c0f945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601554600160a81b900460ff1681565b6113d2612154565b6000546001600160a01b03908116911614611422576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600a602052604090205460ff1615611490576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260046020526040902054156114ea576001600160a01b0381166000908152600460205260409020546114d090610eee565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b6001600160a01b031660009081526009602052604090205460ff1690565b600b6020526000908152604090205481565b60025490565b61158e612154565b6000546001600160a01b039081169116146115de576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b81516115f1906007906020850190613166565b5080516116059060089060208401906131cb565b5060005b825181101561164d576116453384838151811061162257fe5b602002602001015184848151811061163657fe5b60200260200101516000612706565b600101611609565b505050565b61165a612154565b6000546001600160a01b039081169116146116aa576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561164d573d6000803e3d6000fd5b6001600160a01b0381166000908152600a602052604081205460ff161561172257506001600160a01b038116600090815260056020526040902054610f4b565b6001600160a01b038216600090815260046020526040902054610c0f90610eee565b6015546001600160a01b031681565b6001600160a01b03166000908152600a602052604090205460ff1690565b6000546001600160a01b031690565b611788612154565b6000546001600160a01b039081169116146117d8576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60138190556040805182815290517faf41063be21c5f30bfde23c4f04890fa2102fbba0f49df5e45bbef6d3322a3b89181900360200190a150565b60408051808201909152600481526308e9a8ab60e31b602082015290565b6000610c0b61183e612154565b84610e4c856040518060600160405280602581526020016134726025913960066000611868612154565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612518565b600881815481106118a657fe5b600091825260209091200154905081565b6118bf612154565b6000546001600160a01b0390811691161461190f576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561195e57600080fd5b505afa158015611972573d6000803e3d6000fd5b505050506040513d602081101561198857600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b1580156119e057600080fd5b505af11580156119f4573d6000803e3d6000fd5b505050506040513d6020811015611a0a57600080fd5b5050505050565b6001546001600160a01b03163314611a5a5760405162461bcd60e51b815260040180806020018281038252602381526020018061344f6023913960400191505060405180910390fd5b6002544211611a9a5760405162461bcd60e51b81526004018080602001828103825260218152602001806133b96021913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c0b611b08612154565b8484612244565b611b17612154565b6000546001600160a01b03908116911614611b67576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600d602052604090205460ff16611bd4576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600e5481101561111857816001600160a01b0316600e8281548110611bf857fe5b6000918252602090912001546001600160a01b03161415611c9457600e80546000198101908110611c2557fe5b600091825260209091200154600e80546001600160a01b039092169183908110611c4b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600d90915260409020805460ff19169055600e8054806110e957fe5b600101611bd7565b611ca4612154565b6000546001600160a01b03908116911614611cf4576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60158054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611d4f612154565b6000546001600160a01b03908116911614611d9f576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60168190556040805182815290517fee03a39113a1a215cc2508d3dd21985af0461f47ccb652ac28fb3f5a274b7f879181900360200190a150565b611de2612154565b6000546001600160a01b03908116911614611e32576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b038116611e775760405162461bcd60e51b81526004018080602001828103825260258152602001806133026025913960400191505060405180910390fd5b601580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f30563bd7092dfeee0a8fdb0c903536c4ce63111d8dd222a9441bde4e0240c2ae9181900360200190a150565b60165481565b611ed9612154565b6000546001600160a01b03908116911614611f29576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b611fb4612154565b6000546001600160a01b03908116911614612004576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260096020908152604091829020805460ff19169055815192835290517f711fdef8f2d84ec32e12306df0559e86006affdb2b1be5484928b6810406048f9281900390910190a150565b612064612154565b6000546001600160a01b039081169116146120b4576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166120f95760405162461bcd60e51b81526004018080602001828103825260268152602001806132ba6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b03831661219d5760405162461bcd60e51b81526004018080602001828103825260248152602001806133ff6024913960400191505060405180910390fd5b6001600160a01b0382166121e25760405162461bcd60e51b81526004018080602001828103825260228152602001806132e06022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122895760405162461bcd60e51b81526004018080602001828103825260258152602001806133da6025913960400191505060405180910390fd5b6001600160a01b0382166122ce5760405162461bcd60e51b81526004018080602001828103825260238152602001806132476023913960400191505060405180910390fd5b6000811161230d5760405162461bcd60e51b81526004018080602001828103825260298152602001806133906029913960400191505060405180910390fd5b6001600160a01b0382166000908152600d602052604090205460ff1615612371576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b336000908152600d602052604090205460ff16156123cc576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b326000908152600d602052604090205460ff1615612427576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6000612432306116e2565b601654909150811080159081906124535750601554600160a01b900460ff16155b801561249157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156124a65750601554600160a81b900460ff165b156124b95760165491506124b982612828565b6001600160a01b03851660009081526009602052604090205460019060ff16806124fb57506001600160a01b03851660009081526009602052604090205460ff165b15612504575060005b61251086868684612706565b505050505050565b600081848411156125a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561256c578181015183820152602001612554565b50505050905090810190601f1680156125995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006125bc612887565b90925090506125cb82826125d2565b9250505090565b600061261483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a06565b9392505050565b600082820183811015612614576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600080600061268c8a612a6b565b92509250925060008060006126aa8d86866126a56125af565b612aad565b919f909e50909c50959a5093985091965092945050505050565b600061261483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612518565b8061271357612713612afd565b6001600160a01b0384166000908152600a602052604090205460ff16801561275457506001600160a01b0383166000908152600a602052604090205460ff16155b1561276957612764848484612b2f565b612815565b6001600160a01b0384166000908152600a602052604090205460ff161580156127aa57506001600160a01b0383166000908152600a602052604090205460ff165b156127ba57612764848484612c53565b6001600160a01b0384166000908152600a602052604090205460ff1680156127fa57506001600160a01b0383166000908152600a602052604090205460ff165b1561280a57612764848484612cfc565b612815848484612d6f565b8061282257612822612db3565b50505050565b6015805460ff60a01b1916600160a01b17905561284481612dc1565b6040805182815290517f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079181900360200190a1506015805460ff60a01b19169055565b600f54600090819068056bc75e2d63100000825b600c548110156129c6578260046000600c84815481106128b757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291c57508160056000600c84815481106128f557fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561293a57600f5468056bc75e2d6310000094509450505050612a02565b61297a60046000600c848154811061294e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906126c4565b92506129bc60056000600c848154811061299057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906126c4565b915060010161289b565b50600f546129dd9068056bc75e2d631000006125d2565b8210156129fc57600f5468056bc75e2d63100000935093505050612a02565b90925090505b9091565b60008183612a555760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561256c578181015183820152602001612554565b506000838581612a6157fe5b0495945050505050565b600080600080612a7a85612e12565b90506000612a8786612e34565b90506000612a9f82612a9989866126c4565b906126c4565b979296509094509092505050565b6000808080612abc8886612e50565b90506000612aca8887612e50565b90506000612ad88888612e50565b90506000612aea82612a9986866126c4565b939b939a50919850919650505050505050565b601154158015612b0d5750601354155b15612b1757612b2d565b6011805460125560138054601455600091829055555b565b600080600080600080612b4187612675565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612b7390886126c4565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612ba290876126c4565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054612bd1908661261b565b6001600160a01b038916600090815260046020526040902055612bf381612ea9565b612bfd8483612f31565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612c6587612675565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612c9790876126c4565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612ccd908461261b565b6001600160a01b038916600090815260056020908152604080832093909355600490522054612bd1908661261b565b600080600080600080612d0e87612675565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612d4090886126c4565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612c9790876126c4565b600080600080600080612d8187612675565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612ba290876126c4565b601254601155601454601355565b47612dcb82612f55565b6000612dd747836126c4565b6015546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612822573d6000803e3d6000fd5b6000610c0f6064612e2e60115485612e5090919063ffffffff16565b906125d2565b6000610c0f6064612e2e60135485612e5090919063ffffffff16565b600082612e5f57506000610c0f565b82820282848281612e6c57fe5b04146126145760405162461bcd60e51b81526004018080602001828103825260218152602001806133276021913960400191505060405180910390fd5b6000612eb36125af565b90506000612ec18383612e50565b30600090815260046020526040902054909150612ede908261261b565b30600090815260046020908152604080832093909355600a9052205460ff161561164d5730600090815260056020526040902054612f1c908461261b565b30600090815260056020526040902055505050565b600f54612f3e90836126c4565b600f55601054612f4e908261261b565b6010555050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612f8357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ffc57600080fd5b505afa158015613010573d6000803e3d6000fd5b505050506040513d602081101561302657600080fd5b505181518290600190811061303757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050613084307f0000000000000000000000000000000000000000000000000000000000000000600019612158565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613129578181015183820152602001613111565b505050509050019650505050505050600060405180830381600087803b15801561315257600080fd5b505af1158015612510573d6000803e3d6000fd5b8280548282559060005260206000209081019282156131bb579160200282015b828111156131bb57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613186565b506131c7929150613212565b5090565b828054828255906000526020600020908101928215613206579160200282015b828111156132065782518255916020019190600101906131eb565b506131c7929150613231565b5b808211156131c75780546001600160a01b0319168155600101613213565b5b808211156131c7576000815560010161323256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737357652063616e6e6f7420626c61636b6c6973742050616e63616b655377617020726f75746572416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736e6577206368617269747957616c6c657420697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f436f6e7472616374206973206c6f636b656420756e74696c20343820686f75727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122089a0bbb0fb4643e66f05c84128468fef35439eecf86c70dbd47e8349e177423164736f6c634300060c0033000000000000000000000000569fba5a23680aace6ee03d7bacc6c7977957549

Deployed Bytecode

0x6080604052600436106102815760003560e01c8063602bc62b1161014f578063a522ad25116100c1578063d047e4b71161007a578063d047e4b714610a9a578063d12a768814610acd578063dd46706414610ae2578063dd62ed3e14610b0c578063ea2f0b3714610b47578063f2fde38b14610b7a57610288565b8063a522ad2514610988578063a69df4b5146109c3578063a9059cbb146109d8578063b030b34a14610a11578063c49b9a8014610a44578063c8b55b9414610a7057610288565b806388f820201161011357806388f820201461089e5780638da5cb5b146108d15780638ddca183146108e657806395d89b4114610910578063a457c2d714610925578063a4d5a3a51461095e57610288565b8063602bc62b146106da57806367243482146106ef57806368742da61461082357806370a082311461085657806376d4ab991461088957610288565b806331e54834116101f35780634549b039116101ac5780634549b039146105e557806349bd5a5e146106175780634a74bb021461062c57806352390c02146106415780635342acb414610674578063594da156146106a757610288565b806331e54834146104f25780633685d41914610507578063395093511461053a5780633b124fe7146105735780633bd5d17314610588578063437823ec146105b257610288565b806318160ddd1161024557806318160ddd146103e65780631d7ef879146103fb57806323b872dd146104305780632549c791146104735780632d8381191461049d578063313ce567146104c757610288565b8063055a82c91461028d57806306fdde03146102d3578063095ea7b31461035d57806313114a9d146103aa5780631694505e146103d157610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b7600480360360208110156102b057600080fd5b5035610bad565b604080516001600160a01b039092168252519081900360200190f35b3480156102df57600080fd5b506102e8610bd4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032257818101518382015260200161030a565b50505050905090810190601f16801561034f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036957600080fd5b506103966004803603604081101561038057600080fd5b506001600160a01b038135169060200135610bf7565b604080519115158252519081900360200190f35b3480156103b657600080fd5b506103bf610c15565b60408051918252519081900360200190f35b3480156103dd57600080fd5b506102b7610c1b565b3480156103f257600080fd5b506103bf610c3f565b34801561040757600080fd5b5061042e6004803603602081101561041e57600080fd5b50356001600160a01b0316610c4c565b005b34801561043c57600080fd5b506103966004803603606081101561045357600080fd5b506001600160a01b03813581169160208101359091169060400135610dd4565b34801561047f57600080fd5b5061042e6004803603602081101561049657600080fd5b5035610e5b565b3480156104a957600080fd5b506103bf600480360360208110156104c057600080fd5b5035610eee565b3480156104d357600080fd5b506104dc610f50565b6040805160ff9092168252519081900360200190f35b3480156104fe57600080fd5b506103bf610f55565b34801561051357600080fd5b5061042e6004803603602081101561052a57600080fd5b50356001600160a01b0316610f5b565b34801561054657600080fd5b506103966004803603604081101561055d57600080fd5b506001600160a01b03813516906020013561111c565b34801561057f57600080fd5b506103bf61116a565b34801561059457600080fd5b5061042e600480360360208110156105ab57600080fd5b5035611170565b3480156105be57600080fd5b5061042e600480360360208110156105d557600080fd5b50356001600160a01b031661124a565b3480156105f157600080fd5b506103bf6004803603604081101561060857600080fd5b508035906020013515156112fd565b34801561062357600080fd5b506102b7611396565b34801561063857600080fd5b506103966113ba565b34801561064d57600080fd5b5061042e6004803603602081101561066457600080fd5b50356001600160a01b03166113ca565b34801561068057600080fd5b506103966004803603602081101561069757600080fd5b50356001600160a01b0316611550565b3480156106b357600080fd5b506103bf600480360360208110156106ca57600080fd5b50356001600160a01b031661156e565b3480156106e657600080fd5b506103bf611580565b3480156106fb57600080fd5b5061042e6004803603604081101561071257600080fd5b81019060208101813564010000000081111561072d57600080fd5b82018360208201111561073f57600080fd5b8035906020019184602083028401116401000000008311171561076157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156107b157600080fd5b8201836020820111156107c357600080fd5b803590602001918460208302840111640100000000831117156107e557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611586945050505050565b34801561082f57600080fd5b5061042e6004803603602081101561084657600080fd5b50356001600160a01b0316611652565b34801561086257600080fd5b506103bf6004803603602081101561087957600080fd5b50356001600160a01b03166116e2565b34801561089557600080fd5b506102b7611744565b3480156108aa57600080fd5b50610396600480360360208110156108c157600080fd5b50356001600160a01b0316611753565b3480156108dd57600080fd5b506102b7611771565b3480156108f257600080fd5b5061042e6004803603602081101561090957600080fd5b5035611780565b34801561091c57600080fd5b506102e8611813565b34801561093157600080fd5b506103966004803603604081101561094857600080fd5b506001600160a01b038135169060200135611831565b34801561096a57600080fd5b506103bf6004803603602081101561098157600080fd5b5035611899565b34801561099457600080fd5b5061042e600480360360408110156109ab57600080fd5b506001600160a01b03813581169160200135166118b7565b3480156109cf57600080fd5b5061042e611a11565b3480156109e457600080fd5b50610396600480360360408110156109fb57600080fd5b506001600160a01b038135169060200135611afb565b348015610a1d57600080fd5b5061042e60048036036020811015610a3457600080fd5b50356001600160a01b0316611b0f565b348015610a5057600080fd5b5061042e60048036036020811015610a6757600080fd5b50351515611c9c565b348015610a7c57600080fd5b5061042e60048036036020811015610a9357600080fd5b5035611d47565b348015610aa657600080fd5b5061042e60048036036020811015610abd57600080fd5b50356001600160a01b0316611dda565b348015610ad957600080fd5b506103bf611ecb565b348015610aee57600080fd5b5061042e60048036036020811015610b0557600080fd5b5035611ed1565b348015610b1857600080fd5b506103bf60048036036040811015610b2f57600080fd5b506001600160a01b0381358116916020013516611f81565b348015610b5357600080fd5b5061042e60048036036020811015610b6a57600080fd5b50356001600160a01b0316611fac565b348015610b8657600080fd5b5061042e60048036036020811015610b9d57600080fd5b50356001600160a01b031661205c565b60078181548110610bba57fe5b6000918252602090912001546001600160a01b0316905081565b60408051808201909152600981526823b0b6b29021b7b4b760b91b602082015290565b6000610c0b610c04612154565b8484612158565b5060015b92915050565b60105490565b7f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f81565b68056bc75e2d6310000090565b610c54612154565b6000546001600160a01b03908116911614610ca4576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b7310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0382161415610d005760405162461bcd60e51b815260040180806020018281038252602681526020018061326a6026913960400191505060405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff1615610d6e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600d60205260408120805460ff19166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319169091179055565b6000610de1848484612244565b610e5184610ded612154565b610e4c85604051806060016040528060288152602001613348602891396001600160a01b038a16600090815260066020526040812090610e2b612154565b6001600160a01b031681526020810191909152604001600020549190612518565b612158565b5060019392505050565b610e63612154565b6000546001600160a01b03908116911614610eb3576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60118190556040805182815290517f061c82d006233d9a0e9250bcc6cdf14fb913d09ca3ab9b6b5a838934835a6dab9181900360200190a150565b6000600f54821115610f315760405162461bcd60e51b815260040180806020018281038252602a815260200180613290602a913960400191505060405180910390fd5b6000610f3b6125af565b9050610f4783826125d2565b9150505b919050565b600990565b60135481565b610f63612154565b6000546001600160a01b03908116911614610fb3576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600a602052604090205460ff16611020576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b600c5481101561111857816001600160a01b0316600c828154811061104457fe5b6000918252602090912001546001600160a01b0316141561111057600c8054600019810190811061107157fe5b600091825260209091200154600c80546001600160a01b03909216918390811061109757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600c8054806110e957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611118565b600101611023565b5050565b6000610c0b611129612154565b84610e4c856006600061113a612154565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061261b565b60115481565b600061117a612154565b6001600160a01b0381166000908152600a602052604090205490915060ff16156111d55760405162461bcd60e51b815260040180806020018281038252602c815260200180613423602c913960400191505060405180910390fd5b60006111e083612675565b505050506001600160a01b03841660009081526004602052604090205491925061120c919050826126c4565b6001600160a01b038316600090815260046020526040902055600f5461123290826126c4565b600f55601054611242908461261b565b601055505050565b611252612154565b6000546001600160a01b039081169116146112a2576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260096020908152604091829020805460ff19166001179055815192835290517f85ecafd7b8cfcceb72ea6978547a39f89631bf423eea19a63ce8d3881ec51e039281900390910190a150565b600068056bc75e2d6310000083111561135d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161137c57600061136d84612675565b50939550610c0f945050505050565b600061138784612675565b50929550610c0f945050505050565b7f00000000000000000000000021a056e1adf885721a69f1a46a1d2e3ce8f2bf0f81565b601554600160a81b900460ff1681565b6113d2612154565b6000546001600160a01b03908116911614611422576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600a602052604090205460ff1615611490576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260046020526040902054156114ea576001600160a01b0381166000908152600460205260409020546114d090610eee565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b6001600160a01b031660009081526009602052604090205460ff1690565b600b6020526000908152604090205481565b60025490565b61158e612154565b6000546001600160a01b039081169116146115de576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b81516115f1906007906020850190613166565b5080516116059060089060208401906131cb565b5060005b825181101561164d576116453384838151811061162257fe5b602002602001015184848151811061163657fe5b60200260200101516000612706565b600101611609565b505050565b61165a612154565b6000546001600160a01b039081169116146116aa576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561164d573d6000803e3d6000fd5b6001600160a01b0381166000908152600a602052604081205460ff161561172257506001600160a01b038116600090815260056020526040902054610f4b565b6001600160a01b038216600090815260046020526040902054610c0f90610eee565b6015546001600160a01b031681565b6001600160a01b03166000908152600a602052604090205460ff1690565b6000546001600160a01b031690565b611788612154565b6000546001600160a01b039081169116146117d8576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60138190556040805182815290517faf41063be21c5f30bfde23c4f04890fa2102fbba0f49df5e45bbef6d3322a3b89181900360200190a150565b60408051808201909152600481526308e9a8ab60e31b602082015290565b6000610c0b61183e612154565b84610e4c856040518060600160405280602581526020016134726025913960066000611868612154565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612518565b600881815481106118a657fe5b600091825260209091200154905081565b6118bf612154565b6000546001600160a01b0390811691161461190f576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561195e57600080fd5b505afa158015611972573d6000803e3d6000fd5b505050506040513d602081101561198857600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b1580156119e057600080fd5b505af11580156119f4573d6000803e3d6000fd5b505050506040513d6020811015611a0a57600080fd5b5050505050565b6001546001600160a01b03163314611a5a5760405162461bcd60e51b815260040180806020018281038252602381526020018061344f6023913960400191505060405180910390fd5b6002544211611a9a5760405162461bcd60e51b81526004018080602001828103825260218152602001806133b96021913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c0b611b08612154565b8484612244565b611b17612154565b6000546001600160a01b03908116911614611b67576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600d602052604090205460ff16611bd4576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600e5481101561111857816001600160a01b0316600e8281548110611bf857fe5b6000918252602090912001546001600160a01b03161415611c9457600e80546000198101908110611c2557fe5b600091825260209091200154600e80546001600160a01b039092169183908110611c4b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600d90915260409020805460ff19169055600e8054806110e957fe5b600101611bd7565b611ca4612154565b6000546001600160a01b03908116911614611cf4576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60158054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611d4f612154565b6000546001600160a01b03908116911614611d9f576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60168190556040805182815290517fee03a39113a1a215cc2508d3dd21985af0461f47ccb652ac28fb3f5a274b7f879181900360200190a150565b611de2612154565b6000546001600160a01b03908116911614611e32576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b038116611e775760405162461bcd60e51b81526004018080602001828103825260258152602001806133026025913960400191505060405180910390fd5b601580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f30563bd7092dfeee0a8fdb0c903536c4ce63111d8dd222a9441bde4e0240c2ae9181900360200190a150565b60165481565b611ed9612154565b6000546001600160a01b03908116911614611f29576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b611fb4612154565b6000546001600160a01b03908116911614612004576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260096020908152604091829020805460ff19169055815192835290517f711fdef8f2d84ec32e12306df0559e86006affdb2b1be5484928b6810406048f9281900390910190a150565b612064612154565b6000546001600160a01b039081169116146120b4576040805162461bcd60e51b81526020600482018190526024820152600080516020613370833981519152604482015290519081900360640190fd5b6001600160a01b0381166120f95760405162461bcd60e51b81526004018080602001828103825260268152602001806132ba6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b03831661219d5760405162461bcd60e51b81526004018080602001828103825260248152602001806133ff6024913960400191505060405180910390fd5b6001600160a01b0382166121e25760405162461bcd60e51b81526004018080602001828103825260228152602001806132e06022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122895760405162461bcd60e51b81526004018080602001828103825260258152602001806133da6025913960400191505060405180910390fd5b6001600160a01b0382166122ce5760405162461bcd60e51b81526004018080602001828103825260238152602001806132476023913960400191505060405180910390fd5b6000811161230d5760405162461bcd60e51b81526004018080602001828103825260298152602001806133906029913960400191505060405180910390fd5b6001600160a01b0382166000908152600d602052604090205460ff1615612371576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b336000908152600d602052604090205460ff16156123cc576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b326000908152600d602052604090205460ff1615612427576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6000612432306116e2565b601654909150811080159081906124535750601554600160a01b900460ff16155b801561249157507f00000000000000000000000021a056e1adf885721a69f1a46a1d2e3ce8f2bf0f6001600160a01b0316856001600160a01b031614155b80156124a65750601554600160a81b900460ff165b156124b95760165491506124b982612828565b6001600160a01b03851660009081526009602052604090205460019060ff16806124fb57506001600160a01b03851660009081526009602052604090205460ff165b15612504575060005b61251086868684612706565b505050505050565b600081848411156125a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561256c578181015183820152602001612554565b50505050905090810190601f1680156125995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006125bc612887565b90925090506125cb82826125d2565b9250505090565b600061261483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a06565b9392505050565b600082820183811015612614576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600080600061268c8a612a6b565b92509250925060008060006126aa8d86866126a56125af565b612aad565b919f909e50909c50959a5093985091965092945050505050565b600061261483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612518565b8061271357612713612afd565b6001600160a01b0384166000908152600a602052604090205460ff16801561275457506001600160a01b0383166000908152600a602052604090205460ff16155b1561276957612764848484612b2f565b612815565b6001600160a01b0384166000908152600a602052604090205460ff161580156127aa57506001600160a01b0383166000908152600a602052604090205460ff165b156127ba57612764848484612c53565b6001600160a01b0384166000908152600a602052604090205460ff1680156127fa57506001600160a01b0383166000908152600a602052604090205460ff165b1561280a57612764848484612cfc565b612815848484612d6f565b8061282257612822612db3565b50505050565b6015805460ff60a01b1916600160a01b17905561284481612dc1565b6040805182815290517f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079181900360200190a1506015805460ff60a01b19169055565b600f54600090819068056bc75e2d63100000825b600c548110156129c6578260046000600c84815481106128b757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291c57508160056000600c84815481106128f557fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561293a57600f5468056bc75e2d6310000094509450505050612a02565b61297a60046000600c848154811061294e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906126c4565b92506129bc60056000600c848154811061299057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906126c4565b915060010161289b565b50600f546129dd9068056bc75e2d631000006125d2565b8210156129fc57600f5468056bc75e2d63100000935093505050612a02565b90925090505b9091565b60008183612a555760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561256c578181015183820152602001612554565b506000838581612a6157fe5b0495945050505050565b600080600080612a7a85612e12565b90506000612a8786612e34565b90506000612a9f82612a9989866126c4565b906126c4565b979296509094509092505050565b6000808080612abc8886612e50565b90506000612aca8887612e50565b90506000612ad88888612e50565b90506000612aea82612a9986866126c4565b939b939a50919850919650505050505050565b601154158015612b0d5750601354155b15612b1757612b2d565b6011805460125560138054601455600091829055555b565b600080600080600080612b4187612675565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612b7390886126c4565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612ba290876126c4565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054612bd1908661261b565b6001600160a01b038916600090815260046020526040902055612bf381612ea9565b612bfd8483612f31565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612c6587612675565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612c9790876126c4565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612ccd908461261b565b6001600160a01b038916600090815260056020908152604080832093909355600490522054612bd1908661261b565b600080600080600080612d0e87612675565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612d4090886126c4565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612c9790876126c4565b600080600080600080612d8187612675565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612ba290876126c4565b601254601155601454601355565b47612dcb82612f55565b6000612dd747836126c4565b6015546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612822573d6000803e3d6000fd5b6000610c0f6064612e2e60115485612e5090919063ffffffff16565b906125d2565b6000610c0f6064612e2e60135485612e5090919063ffffffff16565b600082612e5f57506000610c0f565b82820282848281612e6c57fe5b04146126145760405162461bcd60e51b81526004018080602001828103825260218152602001806133276021913960400191505060405180910390fd5b6000612eb36125af565b90506000612ec18383612e50565b30600090815260046020526040902054909150612ede908261261b565b30600090815260046020908152604080832093909355600a9052205460ff161561164d5730600090815260056020526040902054612f1c908461261b565b30600090815260056020526040902055505050565b600f54612f3e90836126c4565b600f55601054612f4e908261261b565b6010555050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612f8357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ffc57600080fd5b505afa158015613010573d6000803e3d6000fd5b505050506040513d602081101561302657600080fd5b505181518290600190811061303757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050613084307f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f600019612158565b7f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613129578181015183820152602001613111565b505050509050019650505050505050600060405180830381600087803b15801561315257600080fd5b505af1158015612510573d6000803e3d6000fd5b8280548282559060005260206000209081019282156131bb579160200282015b828111156131bb57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613186565b506131c7929150613212565b5090565b828054828255906000526020600020908101928215613206579160200282015b828111156132065782518255916020019190600101906131eb565b506131c7929150613231565b5b808211156131c75780546001600160a01b0319168155600101613213565b5b808211156131c7576000815560010161323256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737357652063616e6e6f7420626c61636b6c6973742050616e63616b655377617020726f75746572416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736e6577206368617269747957616c6c657420697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f436f6e7472616374206973206c6f636b656420756e74696c20343820686f75727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122089a0bbb0fb4643e66f05c84128468fef35439eecf86c70dbd47e8349e177423164736f6c634300060c0033

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

000000000000000000000000569fba5a23680aace6ee03d7bacc6c7977957549

-----Decoded View---------------
Arg [0] : charityWalletAddress (address): 0x569fba5A23680AAce6EE03D7BacC6C7977957549

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000569fba5a23680aace6ee03d7bacc6c7977957549


Deployed Bytecode Sourcemap

29818:23597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30125:31;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30125:31:0;;:::i;:::-;;;;-1:-1:-1;;;;;30125:31:0;;;;;;;;;;;;;;34457:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35633:195;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35633:195:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;37240:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;31034:51;;;;;;;;;;;;;:::i;34740:97::-;;;;;;;;;;;;;:::i;39595:389::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39595:389:0;-1:-1:-1;;;;;39595:389:0;;:::i;:::-;;35902:448;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35902:448:0;;;;;;;;;;;;;;;;;:::i;41619:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41619:137:0;;:::i;38328:322::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38328:322:0;;:::i;34647:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30937:30;;;;;;;;;;;;;:::i;39114:473::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39114:473:0;-1:-1:-1;;;;;39114:473:0;;:::i;36358:302::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;36358:302:0;;;;;;;;:::i;30854:26::-;;;;;;;;;;;;;:::i;37412:421::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37412:421:0;;:::i;41300:153::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41300:153:0;-1:-1:-1;;;;;41300:153:0;;:::i;37841:479::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37841:479:0;;;;;;;;;:::i;31092:38::-;;;;;;;;;;;;;:::i;31282:40::-;;;;;;;;;;;;;:::i;38658:448::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38658:448:0;-1:-1:-1;;;;;38658:448:0;;:::i;46097:126::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46097:126:0;-1:-1:-1;;;;;46097:126:0;;:::i;30311:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30311:53:0;-1:-1:-1;;;;;30311:53:0;;:::i;19551:92::-;;;;;;;;;;;;;:::i;50668:316::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50668:316:0;;;;;;;;-1:-1:-1;50668:316:0;;-1:-1:-1;;50668:316:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50668:316:0;;-1:-1:-1;50668:316:0;;-1:-1:-1;;;;;50668:316:0:i;53233:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;53233:179:0;-1:-1:-1;;;;;53233:179:0;;:::i;34845:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34845:198:0;-1:-1:-1;;;;;34845:198:0;;:::i;31137:44::-;;;;;;;;;;;;;:::i;37078:154::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37078:154:0;-1:-1:-1;;;;;37078:154:0;;:::i;18297:79::-;;;;;;;;;;;;;:::i;41764:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41764:167:0;;:::i;34550:89::-;;;;;;;;;;;;;:::i;36668:402::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;36668:402:0;;;;;;;;:::i;30163:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30163:30:0;;:::i;53020:201::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;53020:201:0;;;;;;;;;;:::i;20007:333::-;;;;;;;;;;;;;:::i;35092:201::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35092:201:0;;;;;;;;:::i;39992:538::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39992:538:0;-1:-1:-1;;;;;39992:538:0;;:::i;41939:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41939:173:0;;;;:::i;42120:213::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42120:213:0;;:::i;46231:356::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46231:356:0;-1:-1:-1;;;;;46231:356:0;;:::i;31336:71::-;;;;;;;;;;;;;:::i;19719:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19719:216:0;;:::i;35393:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35393:186:0;;;;;;;;;;:::i;41461:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41461:150:0;-1:-1:-1;;;;;41461:150:0;;:::i;19260:283::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19260:283:0;-1:-1:-1;;;;;19260:283:0;;:::i;30125:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30125:31:0;;-1:-1:-1;30125:31:0;:::o;34457:85::-;34529:5;;;;;;;;;;;;-1:-1:-1;;;34529:5:0;;;;34457:85;:::o;35633:195::-;35737:4;35759:39;35768:12;:10;:12::i;:::-;35782:7;35791:6;35759:8;:39::i;:::-;-1:-1:-1;35816:4:0;35633:195;;;;;:::o;37240:89::-;37311:10;;37240:89;:::o;31034:51::-;;;:::o;34740:97::-;30589:27;34740:97;:::o;39595:389::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;39702:42:::1;-1:-1:-1::0;;;;;39691:53:0;::::1;;;39669:141;;;;-1:-1:-1::0;;;39669:141:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;39830:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;39829:27;39821:70;;;::::0;;-1:-1:-1;;;39821:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;39902:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;39902:33:0::1;39931:4;39902:33:::0;;::::1;::::0;;;39946:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;39946:30:0::1;::::0;;::::1;::::0;;39595:389::o;35902:448::-;36036:4;36053:36;36063:6;36071:9;36082:6;36053:9;:36::i;:::-;36100:220;36123:6;36144:12;:10;:12::i;:::-;36171:138;36227:6;36171:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36171:19:0;;;;;;:11;:19;;;;;;36191:12;:10;:12::i;:::-;-1:-1:-1;;;;;36171:33:0;;;;;;;;;;;;-1:-1:-1;36171:33:0;;;:138;:37;:138::i;:::-;36100:8;:220::i;:::-;-1:-1:-1;36338:4:0;35902:448;;;;;:::o;41619:137::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;41692:7:::1;:16:::0;;;41724:24:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;41619:137:::0;:::o;38328:322::-;38422:7;38480;;38469;:18;;38447:110;;;;-1:-1:-1;;;38447:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38568:19;38590:10;:8;:10::i;:::-;38568:32;-1:-1:-1;38618:24:0;:7;38568:32;38618:11;:24::i;:::-;38611:31;;;38328:322;;;;:::o;34647:85::-;30844:1;34647:85;:::o;30937:30::-;;;;:::o;39114:473::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;39194:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;39186:56;;;::::0;;-1:-1:-1;;;39186:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;39258:9;39253:327;39277:9;:16:::0;39273:20;::::1;39253:327;;;39335:7;-1:-1:-1::0;;;;;39319:23:0::1;:9;39329:1;39319:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;39319:12:0::1;:23;39315:254;;;39378:9;39388:16:::0;;-1:-1:-1;;39388:20:0;;;39378:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;39363:9:::1;:12:::0;;-1:-1:-1;;;;;39378:31:0;;::::1;::::0;39373:1;;39363:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;39363:46:0::1;-1:-1:-1::0;;;;;39363:46:0;;::::1;;::::0;;39428:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;39467:11:::1;:20:::0;;;;:28;;-1:-1:-1;;39467:28:0::1;::::0;;39514:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;39514:15:0;;;;;-1:-1:-1;;;;;;39514:15:0::1;::::0;;;;;39548:5:::1;;39315:254;39295:3;;39253:327;;;;39114:473:::0;:::o;36358:302::-;36475:4;36497:133;36520:12;:10;:12::i;:::-;36547:7;36569:50;36608:10;36569:11;:25;36581:12;:10;:12::i;:::-;-1:-1:-1;;;;;36569:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;36569:25:0;;;:34;;;;;;;;;;;:38;:50::i;30854:26::-;;;;:::o;37412:421::-;37466:14;37483:12;:10;:12::i;:::-;-1:-1:-1;;;;;37529:19:0;;;;;;:11;:19;;;;;;37466:29;;-1:-1:-1;37529:19:0;;37528:20;37506:114;;;;-1:-1:-1;;;37506:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37632:15;37661:19;37672:7;37661:10;:19::i;:::-;-1:-1:-1;;;;;;;;;37709:15:0;;;;;;:7;:15;;;;;;37631:49;;-1:-1:-1;37709:28:0;;:15;-1:-1:-1;37631:49:0;37709:19;:28::i;:::-;-1:-1:-1;;;;;37691:15:0;;;;;;:7;:15;;;;;:46;37758:7;;:20;;37770:7;37758:11;:20::i;:::-;37748:7;:30;37802:10;;:23;;37817:7;37802:14;:23::i;:::-;37789:10;:36;-1:-1:-1;;;37412:421:0:o;41300:153::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;41371:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;41371:34:0::1;41401:4;41371:34;::::0;;41421:24;;;;;;;::::1;::::0;;;;;;;;::::1;41300:153:::0;:::o;37841:479::-;37959:7;30589:27;37992:7;:18;;37984:62;;;;;-1:-1:-1;;;37984:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38062:17;38057:256;;38097:15;38126:19;38137:7;38126:10;:19::i;:::-;-1:-1:-1;38096:49:0;;-1:-1:-1;38160:14:0;;-1:-1:-1;;;;;38160:14:0;38057:256;38210:23;38245:19;38256:7;38245:10;:19::i;:::-;-1:-1:-1;38207:57:0;;-1:-1:-1;38279:22:0;;-1:-1:-1;;;;;38279:22:0;31092:38;;;:::o;31282:40::-;;;-1:-1:-1;;;31282:40:0;;;;;:::o;38658:448::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38855:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;38854:21;38846:61;;;::::0;;-1:-1:-1;;;38846:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;38922:16:0;::::1;38941:1;38922:16:::0;;;:7:::1;:16;::::0;;;;;:20;38918:109:::1;;-1:-1:-1::0;;;;;38998:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;38978:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;38959:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;38918:109:::1;-1:-1:-1::0;;;;;39037:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;39037:27:0::1;39060:4;39037:27:::0;;::::1;::::0;;;39075:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;39075:23:0::1;::::0;;::::1;::::0;;38658:448::o;46097:126::-;-1:-1:-1;;;;;46188:27:0;46164:4;46188:27;;;:18;:27;;;;;;;;;46097:126::o;30311:53::-;;;;;;;;;;;;;:::o;19551:92::-;19626:9;;19551:92;:::o;50668:316::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;50787:22;;::::1;::::0;:14:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;50820:22:0;;::::1;::::0;:13:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;;50858:9;50853:124;50877:5;:12;50873:1;:16;50853:124;;;50911:54;50926:10;50938:5;50944:1;50938:8;;;;;;;;;;;;;;50948:6;50955:1;50948:9;;;;;;;;;;;;;;50959:5;50911:14;:54::i;:::-;50891:3;;50853:124;;;;50668:316:::0;;:::o;53233:179::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;53361:43:::1;::::0;53329:21:::1;::::0;-1:-1:-1;;;;;53361:24:0;::::1;::::0;:43;::::1;;;::::0;53329:21;;53301:25:::1;53361:43:::0;53301:25;53361:43;53329:21;53361:24;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;34845:198:::0;-1:-1:-1;;;;;34935:20:0;;34911:7;34935:20;;;:11;:20;;;;;;;;34931:49;;;-1:-1:-1;;;;;;34964:16:0;;;;;;:7;:16;;;;;;34957:23;;34931:49;-1:-1:-1;;;;;35018:16:0;;;;;;:7;:16;;;;;;34998:37;;:19;:37::i;31137:44::-;;;-1:-1:-1;;;;;31137:44:0;;:::o;37078:154::-;-1:-1:-1;;;;;37204:20:0;37175:4;37204:20;;;:11;:20;;;;;;;;;37078:154::o;18297:79::-;18335:7;18362:6;-1:-1:-1;;;;;18362:6:0;18297:79;:::o;41764:167::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;41847:11:::1;:26:::0;;;41889:34:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;41764:167:::0;:::o;34550:89::-;34624:7;;;;;;;;;;;;-1:-1:-1;;;34624:7:0;;;;34550:89;:::o;36668:402::-;36790:4;36812:228;36835:12;:10;:12::i;:::-;36862:7;36884:145;36941:15;36884:145;;;;;;;;;;;;;;;;;:11;:25;36896:12;:10;:12::i;:::-;-1:-1:-1;;;;;36884:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;36884:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;30163:30::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30163:30:0;:::o;53020:201::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;53104:25:::1;53132:5;-1:-1:-1::0;;;;;53132:15:0::1;;53156:4;53132:30;;;;;;;;;;;;;-1:-1:-1::0;;;;;53132:30:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;53132:30:0;53173:40:::1;::::0;;-1:-1:-1;;;53173:40:0;;-1:-1:-1;;;;;53173:40:0;;::::1;;::::0;::::1;::::0;;;;;;;;;53132:30;;-1:-1:-1;53173:14:0;;::::1;::::0;::::1;::::0;:40;;;;;53132:30:::1;::::0;53173:40;;;;;;;;-1:-1:-1;53173:14:0;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;;53020:201:0:o;20007:333::-;20075:14;;-1:-1:-1;;;;;20075:14:0;20093:10;20075:28;20053:113;;;;-1:-1:-1;;;20053:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20191:9;;20185:3;:15;20177:61;;;;-1:-1:-1;;;20177:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20283:14;;;20275:6;;20254:44;;-1:-1:-1;;;;;20283:14:0;;;;20275:6;;;;20254:44;;;20318:14;;;20309:23;;-1:-1:-1;;;;;;20309:23:0;-1:-1:-1;;;;;20318:14:0;;;20309:23;;;;;;20007:333::o;35092:201::-;35199:4;35221:42;35231:12;:10;:12::i;:::-;35245:9;35256:6;35221:9;:42::i;39992:538::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;40079:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;40071:65;;;::::0;;-1:-1:-1;;;40071:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;40152:9;40147:376;40171:16;:23:::0;40167:27;::::1;40147:376;;;40243:7;-1:-1:-1::0;;;;;40220:30:0::1;:16;40237:1;40220:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;40220:19:0::1;:30;40216:296;;;40293:16;40332:23:::0;;-1:-1:-1;;40332:27:0;;;40293:85;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;40271:16:::1;:19:::0;;-1:-1:-1;;;;;40293:85:0;;::::1;::::0;40288:1;;40271:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:107:::0;;-1:-1:-1;;;;;;40271:107:0::1;-1:-1:-1::0;;;;;40271:107:0;;::::1;;::::0;;40397:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;40397:34:0::1;::::0;;40450:16:::1;:22:::0;;;::::1;;;40216:296;40196:3;;40147:376;;41939:173:::0;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;42018:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;42018:32:0;::::1;-1:-1:-1::0;;;;42018:32:0;;::::1;::::0;;;::::1;::::0;;;42066:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;41939:173:::0;:::o;42120:213::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;42231:29:::1;:38:::0;;;42285:40:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;42120:213:::0;:::o;46231:356::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;46371:34:0;::::1;46349:121;;;;-1:-1:-1::0;;;46349:121:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46481:21;:44:::0;;-1:-1:-1;;;;;46481:44:0;::::1;-1:-1:-1::0;;;;;;46481:44:0;;::::1;::::0;::::1;::::0;;;46541:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;46231:356:::0;:::o;31336:71::-;;;;:::o;19719:216::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;19802:6:::1;::::0;;;19785:23;;-1:-1:-1;;;;;;19785:23:0;;::::1;-1:-1:-1::0;;;;;19802:6:0;::::1;19785:23;::::0;;;19819:19:::1;::::0;;19861:3:::1;:10:::0;::::1;19849:9;:22:::0;19887:40:::1;::::0;19802:6;;19887:40:::1;::::0;19802:6;;19887:40:::1;19719:216:::0;:::o;35393:186::-;-1:-1:-1;;;;;35544:18:0;;;35512:7;35544:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;35393:186::o;41461:150::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;41530:27:0;::::1;41560:5;41530:27:::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;41530:35:0::1;::::0;;41581:22;;;;;;;::::1;::::0;;;;;;;;::::1;41461:150:::0;:::o;19260:283::-;18519:12;:10;:12::i;:::-;18509:6;;-1:-1:-1;;;;;18509:6:0;;;:22;;;18501:67;;;;;-1:-1:-1;;;18501:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18501:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19365:22:0;::::1;19343:110;;;;-1:-1:-1::0;;;19343:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19490:6;::::0;;19469:38:::1;::::0;-1:-1:-1;;;;;19469:38:0;;::::1;::::0;19490:6;::::1;::::0;19469:38:::1;::::0;::::1;19518:6;:17:::0;;-1:-1:-1;;;;;;19518:17:0::1;-1:-1:-1::0;;;;;19518:17:0;;;::::1;::::0;;;::::1;::::0;;19260:283::o;10249:106::-;10337:10;10249:106;:::o;46595:371::-;-1:-1:-1;;;;;46722:19:0;;46714:68;;;;-1:-1:-1;;;46714:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46801:21:0;;46793:68;;;;-1:-1:-1;;;46793:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46874:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;46926:32;;;;;;;;;;;;;;;;;46595:371;;;:::o;46974:1713::-;-1:-1:-1;;;;;47096:18:0;;47088:68;;;;-1:-1:-1;;;47088:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47175:16:0;;47167:64;;;;-1:-1:-1;;;47167:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47259:1;47250:6;:10;47242:64;;;;-1:-1:-1;;;47242:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47326:21:0;;;;;;:17;:21;;;;;;;;47325:22;47317:54;;;;;-1:-1:-1;;;47317:54:0;;;;;;;;;;;;-1:-1:-1;;;47317:54:0;;;;;;;;;;;;;;;47409:10;47391:29;;;;:17;:29;;;;;;;;47390:30;47382:62;;;;;-1:-1:-1;;;47382:62:0;;;;;;;;;;;;-1:-1:-1;;;47382:62:0;;;;;;;;;;;;;;;47482:9;47464:28;;;;:17;:28;;;;;;;;47463:29;47455:61;;;;;-1:-1:-1;;;47455:61:0;;;;;;;;;;;;-1:-1:-1;;;47455:61:0;;;;;;;;;;;;;;;47811:28;47842:24;47860:4;47842:9;:24::i;:::-;47941:29;;47811:55;;-1:-1:-1;47904:66:0;;;;;;;47999:53;;-1:-1:-1;48036:16:0;;-1:-1:-1;;;48036:16:0;;;;48035:17;47999:53;:91;;;;;48077:13;-1:-1:-1;;;;;48069:21:0;:4;-1:-1:-1;;;;;48069:21:0;;;47999:91;:129;;;;-1:-1:-1;48107:21:0;;-1:-1:-1;;;48107:21:0;;;;47999:129;47981:289;;;48178:29;;48155:52;;48222:36;48237:20;48222:14;:36::i;:::-;-1:-1:-1;;;;;48466:24:0;;48343:12;48466:24;;;:18;:24;;;;;;48358:4;;48466:24;;;:50;;-1:-1:-1;;;;;;48494:22:0;;;;;;:18;:22;;;;;;;;48466:50;48462:98;;;-1:-1:-1;48543:5:0;48462:98;48638:41;48653:4;48659:2;48663:6;48671:7;48638:14;:41::i;:::-;46974:1713;;;;;;:::o;4719:226::-;4839:7;4875:12;4867:6;;;;4859:29;;;;-1:-1:-1;;;4859:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4911:5:0;;;4719:226::o;44274:164::-;44316:7;44337:15;44354;44373:19;:17;:19::i;:::-;44336:56;;-1:-1:-1;44336:56:0;-1:-1:-1;44410:20:0;44336:56;;44410:11;:20::i;:::-;44403:27;;;;44274:164;:::o;6151:132::-;6209:7;6236:39;6240:1;6243;6236:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6229:46;6151:132;-1:-1:-1;;;6151:132:0:o;3816:181::-;3874:7;3906:5;;;3930:6;;;;3922:46;;;;;-1:-1:-1;;;3922:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;42590:710;42690:7;42712;42734;42756;42778;42800;42836:23;42861:12;42875:16;42895:44;42921:7;42895:11;:44::i;:::-;42835:104;;;;;;42951:15;42968:23;42993:12;43009:111;43035:7;43057:4;43076:8;43099:10;:8;:10::i;:::-;43009:11;:111::i;:::-;42950:170;;;;-1:-1:-1;42950:170:0;;-1:-1:-1;43224:15:0;;-1:-1:-1;43254:4:0;;-1:-1:-1;43273:8:0;;-1:-1:-1;42590:710:0;;-1:-1:-1;;;;;42590:710:0:o;4280:136::-;4338:7;4365:43;4369:1;4372;4365:43;;;;;;;;;;;;;;;;;:3;:43::i;49842:708::-;49998:7;49993:28;;50007:14;:12;:14::i;:::-;-1:-1:-1;;;;;50038:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;50062:22:0;;;;;;:11;:22;;;;;;;;50061:23;50038:46;50034:467;;;50101:48;50123:6;50131:9;50142:6;50101:21;:48::i;:::-;50034:467;;;-1:-1:-1;;;;;50172:19:0;;;;;;:11;:19;;;;;;;;50171:20;:46;;;;-1:-1:-1;;;;;;50195:22:0;;;;;;:11;:22;;;;;;;;50171:46;50167:334;;;50234:46;50254:6;50262:9;50273:6;50234:19;:46::i;50167:334::-;-1:-1:-1;;;;;50302:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;50325:22:0;;;;;;:11;:22;;;;;;;;50302:45;50298:203;;;50364:48;50386:6;50394:9;50405:6;50364:21;:48::i;50298:203::-;50445:44;50463:6;50471:9;50482:6;50445:17;:44::i;:::-;50518:7;50513:29;;50527:15;:13;:15::i;:::-;49842:708;;;;:::o;48695:185::-;31950:16;:23;;-1:-1:-1;;;;31950:23:0;-1:-1:-1;;;31950:23:0;;;48780:38:::1;48797:20:::0;48780:16:::1;:38::i;:::-;48836:36;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;31996:16:0;:24;;-1:-1:-1;;;;31996:24:0;;;48695:185::o;44446:605::-;44544:7;;44497;;;;30589:27;44497:7;44598:338;44622:9;:16;44618:20;;44598:338;;;44706:7;44682;:21;44690:9;44700:1;44690:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44690:12:0;44682:21;;;;;;;;;;;;;:31;;:83;;;44758:7;44734;:21;44742:9;44752:1;44742:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44742:12:0;44734:21;;;;;;;;;;;;;:31;44682:83;44660:146;;;44789:7;;30589:27;44781:25;;;;;;;;;44660:146;44831:34;44843:7;:21;44851:9;44861:1;44851:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44851:12:0;44843:21;;;;;;;;;;;;;44831:7;;:11;:34::i;:::-;44821:44;;44890:34;44902:7;:21;44910:9;44920:1;44910:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44910:12:0;44902:21;;;;;;;;;;;;;44890:7;;:11;:34::i;:::-;44880:44;-1:-1:-1;44640:3:0;;44598:338;;;-1:-1:-1;44960:7:0;;:20;;30589:27;44960:11;:20::i;:::-;44950:7;:30;44946:61;;;44990:7;;30589:27;44982:25;;;;;;;;44946:61;45026:7;;-1:-1:-1;45035:7:0;-1:-1:-1;44446:605:0;;;:::o;6779:312::-;6899:7;6934:12;6927:5;6919:28;;;;-1:-1:-1;;;6919:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6958:9;6974:1;6970;:5;;;;;;;6779:312;-1:-1:-1;;;;;6779:312:0:o;43308:404::-;43409:7;43431;43453;43488:12;43503:24;43519:7;43503:15;:24::i;:::-;43488:39;;43538:16;43557:28;43577:7;43557:19;:28::i;:::-;43538:47;-1:-1:-1;43596:23:0;43622:31;43538:47;43622:17;:7;43634:4;43622:11;:17::i;:::-;:21;;:31::i;:::-;43596:57;43689:4;;-1:-1:-1;43695:8:0;;-1:-1:-1;43308:404:0;;-1:-1:-1;;;43308:404:0:o;43720:546::-;43917:7;;;;44014:24;:7;44026:11;44014;:24::i;:::-;43996:42;-1:-1:-1;44049:12:0;44064:21;:4;44073:11;44064:8;:21::i;:::-;44049:36;-1:-1:-1;44096:16:0;44115:25;:8;44128:11;44115:12;:25::i;:::-;44096:44;-1:-1:-1;44151:23:0;44177:31;44096:44;44177:17;:7;44189:4;44177:11;:17::i;:31::-;44227:7;;;;-1:-1:-1;44253:4:0;;-1:-1:-1;43720:546:0;;-1:-1:-1;;;;;;;43720:546:0:o;45729:229::-;45776:7;;:12;:32;;;;-1:-1:-1;45792:11:0;;:16;45776:32;45772:45;;;45810:7;;45772:45;45847:7;;;45829:15;:25;45889:11;;;45865:21;:35;-1:-1:-1;45913:11:0;;;;45935:15;45729:229;:::o;52325:683::-;52476:15;52506:23;52544:12;52571:23;52609:12;52636:16;52666:19;52677:7;52666:10;:19::i;:::-;-1:-1:-1;;;;;52714:15:0;;;;;;:7;:15;;;;;;52461:224;;-1:-1:-1;52461:224:0;;-1:-1:-1;52461:224:0;;-1:-1:-1;52461:224:0;-1:-1:-1;52461:224:0;-1:-1:-1;52461:224:0;-1:-1:-1;52714:28:0;;52734:7;52714:19;:28::i;:::-;-1:-1:-1;;;;;52696:15:0;;;;;;:7;:15;;;;;;;;:46;;;;52771:7;:15;;;;:28;;52791:7;52771:19;:28::i;:::-;-1:-1:-1;;;;;52753:15:0;;;;;;;:7;:15;;;;;;:46;;;;52831:18;;;;;;;:39;;52854:15;52831:22;:39::i;:::-;-1:-1:-1;;;;;52810:18:0;;;;;;:7;:18;;;;;:60;52881:25;52897:8;52881:15;:25::i;:::-;52917:23;52929:4;52935;52917:11;:23::i;:::-;52973:9;-1:-1:-1;;;;;52956:44:0;52965:6;-1:-1:-1;;;;;52956:44:0;;52984:15;52956:44;;;;;;;;;;;;;;;;;;52325:683;;;;;;;;;:::o;51622:695::-;51771:15;51801:23;51839:12;51866:23;51904:12;51931:16;51961:19;51972:7;51961:10;:19::i;:::-;-1:-1:-1;;;;;52009:15:0;;;;;;:7;:15;;;;;;51756:224;;-1:-1:-1;51756:224:0;;-1:-1:-1;51756:224:0;;-1:-1:-1;51756:224:0;-1:-1:-1;51756:224:0;-1:-1:-1;51756:224:0;-1:-1:-1;52009:28:0;;51756:224;52009:19;:28::i;:::-;-1:-1:-1;;;;;51991:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;52069:18;;;;;:7;:18;;;;;:39;;52092:15;52069:22;:39::i;:::-;-1:-1:-1;;;;;52048:18:0;;;;;;:7;:18;;;;;;;;:60;;;;52140:7;:18;;;;:39;;52163:15;52140:22;:39::i;40538:754::-;40689:15;40719:23;40757:12;40784:23;40822:12;40849:16;40879:19;40890:7;40879:10;:19::i;:::-;-1:-1:-1;;;;;40927:15:0;;;;;;:7;:15;;;;;;40674:224;;-1:-1:-1;40674:224:0;;-1:-1:-1;40674:224:0;;-1:-1:-1;40674:224:0;-1:-1:-1;40674:224:0;-1:-1:-1;40674:224:0;-1:-1:-1;40927:28:0;;40947:7;40927:19;:28::i;:::-;-1:-1:-1;;;;;40909:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40984:7;:15;;;;:28;;41004:7;40984:19;:28::i;50992:622::-;51139:15;51169:23;51207:12;51234:23;51272:12;51299:16;51329:19;51340:7;51329:10;:19::i;:::-;-1:-1:-1;;;;;51377:15:0;;;;;;:7;:15;;;;;;51124:224;;-1:-1:-1;51124:224:0;;-1:-1:-1;51124:224:0;;-1:-1:-1;51124:224:0;-1:-1:-1;51124:224:0;-1:-1:-1;51124:224:0;-1:-1:-1;51377:28:0;;51124:224;51377:19;:28::i;45966:123::-;46020:15;;46010:7;:25;46060:21;;46046:11;:35;45966:123::o;49485:276::-;49571:21;49603:24;49620:6;49603:16;:24::i;:::-;49638:18;49659:41;:21;49685:14;49659:25;:41::i;:::-;49711:21;;:42;;49638:62;;-1:-1:-1;;;;;;49711:21:0;;:42;;;;;49638:62;;49711:21;:42;:21;:42;49638:62;49711:21;:42;;;;;;;;;;;;;;;;;;;45413:130;45477:7;45504:31;45529:5;45504:20;45516:7;;45504;:11;;:20;;;;:::i;:::-;:24;;:31::i;45551:170::-;45646:7;45678:35;45707:5;45678:24;45690:11;;45678:7;:11;;:24;;;;:::i;5204:471::-;5262:7;5507:6;5503:47;;-1:-1:-1;5537:1:0;5530:8;;5503:47;5574:5;;;5578:1;5574;:5;:1;5598:5;;;;;:10;5590:56;;;;-1:-1:-1;;;5590:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45059:346;45121:19;45143:10;:8;:10::i;:::-;45121:32;-1:-1:-1;45164:16:0;45183:25;:8;45121:32;45183:12;:25::i;:::-;45260:4;45244:22;;;;:7;:22;;;;;;45164:44;;-1:-1:-1;45244:36:0;;45164:44;45244:26;:36::i;:::-;45235:4;45219:22;;;;:7;:22;;;;;;;;:61;;;;45295:11;:26;;;;;;45291:106;;;45377:4;45361:22;;;;:7;:22;;;;;;:36;;45388:8;45361:26;:36::i;:::-;45352:4;45336:22;;;;:7;:22;;;;;:61;45059:346;;;:::o;42435:147::-;42513:7;;:17;;42525:4;42513:11;:17::i;:::-;42503:7;:27;42554:10;;:20;;42569:4;42554:14;:20::i;:::-;42541:10;:33;-1:-1:-1;;42435:147:0:o;48888:589::-;49038:16;;;49052:1;49038:16;;;49014:21;49038:16;;;;;49014:21;49038:16;;;;;;;;;;-1:-1:-1;49038:16:0;49014:40;;49083:4;49065;49070:1;49065:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;49065:23:0;;;-1:-1:-1;;;;;49065:23:0;;;;;49109:15;-1:-1:-1;;;;;49109:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;49109:22:0;49099:7;;:4;;49104:1;;49099:7;;;;;;;;;;;:32;-1:-1:-1;;;;;49099:32:0;;;-1:-1:-1;;;;;49099:32:0;;;;;49144:62;49161:4;49176:15;-1:-1:-1;;49144:8:0;:62::i;:::-;49245:15;-1:-1:-1;;;;;49245:66:0;;49326:11;49352:1;49396:4;49423;49443:15;49245:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49245:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

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