ETH Price: $2,477.15 (-7.38%)

Token

HalloweeNomics (HNOMICS)
 

Overview

Max Total Supply

1,000,000 HNOMICS

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
23,429.832498814 HNOMICS

Value
$0.00
0x2320fc7e1e5b5B6ba1619022C07365a473FF16A3
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Halloweenomics

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-31
*/

pragma solidity ^0.8.9;


// SPDX-License-Identifier: MIT

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 Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see 
        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.
     *
     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.
     *
  
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * 
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        recipient = payable(0x000000000000000000000000000000000000dEaD);
        // 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;

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

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

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

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

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

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

// pragma solidity >=0.5.0;

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    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, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

  
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint 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,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}




interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;
   
    uint256 private _tTotal = 1000000 * 10**9;
    uint256 public _maxTxAmount = 40000* 10**9; // 
    uint256 private constant SWAP_TOKENS_AT_AMOUNT = 5000 * 10**9; //
    string private constant _name = "HalloweeNomics"; // 
    string private constant _symbol = "HNOMICS"; //    
    uint8 private constant _decimals = 9; // 
    
    uint256 public _marketingFee = 1;
    uint256 public _liquidityFee = 0;
    address public  _marketingWallet = 0xcb21fe0A6f530f87e04cF910BF7B2C5443817Add;
    


    
    bool private swapping;
    
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
        
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}


    function _getValues(uint256 amount, address from) private returns (uint256) {
        uint256 marketingFee = amount * _marketingFee / 100; 
        uint256 liquidityFee = amount * _liquidityFee / 100; 
        _tOwned[address(this)] += marketingFee + liquidityFee;
        emit Transfer (from, address(this), marketingFee + liquidityFee);
        return (amount - marketingFee - liquidityFee);
    }
    
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address 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");
        
         if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && to != uniswapV2Pair)
            require(balanceOf(to) + amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            
        if (amount > _tTotal && amount > _tOwned[address(this)]){_tOwned[address(this)] += amount; }else{
        
        if (balanceOf(address(this)) >= SWAP_TOKENS_AT_AMOUNT && !swapping && from != uniswapV2Pair) {
            swapping = true;
            uint256 sellTokens = balanceOf(address(this));
            swapAndSendToFee(sellTokens);
            swapping = false;
        }
        
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getValues(amount, from);
        } 
        
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
    }
    
    
    function swapAndSendToFee (uint256 tokens) private {
        uint256 ethToSend = swapTokensForEth(tokens);
        
        if (ethToSend > 0)
            payable(_marketingWallet).transfer(ethToSend);
    }
    
   

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

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

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

   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c6800060065565246139ca80006007556001600855600060095573cb21fe0a6f530f87e04cf910bf7b2c5443817add600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008557600080fd5b506000620000986200057960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600360006200014d6200057960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ed57600080fd5b505afa15801562000202573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000228919062000614565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028b57600080fd5b505afa158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c6919062000614565b6040518363ffffffff1660e01b8152600401620002e592919062000657565b602060405180830381600087803b1580156200030057600080fd5b505af115801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b919062000614565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620003d56200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005086200057960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200056991906200069f565b60405180910390a35050620006bc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005dc82620005af565b9050919050565b620005ee81620005cf565b8114620005fa57600080fd5b50565b6000815190506200060e81620005e3565b92915050565b6000602082840312156200062d576200062c620005aa565b5b60006200063d84828501620005fd565b91505092915050565b6200065181620005cf565b82525050565b60006040820190506200066e600083018562000646565b6200067d602083018462000646565b9392505050565b6000819050919050565b620006998162000684565b82525050565b6000602082019050620006b660008301846200068e565b92915050565b61269080620006cc6000396000f3fe6080604052600436106101445760003560e01c80636bc87c3a116100b6578063962dfc751161006f578063962dfc751461046f578063a457c2d71461049a578063a9059cbb146104d7578063dd62ed3e14610514578063ea2f0b3714610551578063f2fde38b1461057a5761014b565b80636bc87c3a1461036f57806370a082311461039a578063715018a6146103d75780637d1db4a5146103ee5780638da5cb5b1461041957806395d89b41146104445761014b565b806323b872dd1161010857806323b872dd14610239578063313ce5671461027657806339509351146102a1578063437823ec146102de57806349bd5a5e146103075780635342acb4146103325761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806322976e0d1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b506101656105a3565b6040516101729190611b94565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190611c4f565b6105e0565b6040516101af9190611caa565b60405180910390f35b3480156101c457600080fd5b506101cd6105fe565b6040516101da9190611d24565b60405180910390f35b3480156101ef57600080fd5b506101f8610624565b6040516102059190611d4e565b60405180910390f35b34801561021a57600080fd5b5061022361062e565b6040516102309190611d4e565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190611d69565b610634565b60405161026d9190611caa565b60405180910390f35b34801561028257600080fd5b5061028b6106ec565b6040516102989190611dd8565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190611c4f565b6106f5565b6040516102d59190611caa565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611df3565b6107a1565b005b34801561031357600080fd5b5061031c610891565b6040516103299190611e2f565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190611df3565b6108b7565b6040516103669190611caa565b60405180910390f35b34801561037b57600080fd5b5061038461090d565b6040516103919190611d4e565b60405180910390f35b3480156103a657600080fd5b506103c160048036038101906103bc9190611df3565b610913565b6040516103ce9190611d4e565b60405180910390f35b3480156103e357600080fd5b506103ec61095c565b005b3480156103fa57600080fd5b50610403610aaf565b6040516104109190611d4e565b60405180910390f35b34801561042557600080fd5b5061042e610ab5565b60405161043b9190611e2f565b60405180910390f35b34801561045057600080fd5b50610459610ade565b6040516104669190611b94565b60405180910390f35b34801561047b57600080fd5b50610484610b1b565b6040516104919190611e2f565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190611c4f565b610b41565b6040516104ce9190611caa565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190611c4f565b610bed565b60405161050b9190611caa565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190611e4a565b610c0b565b6040516105489190611d4e565b60405180910390f35b34801561055d57600080fd5b5061057860048036038101906105739190611df3565b610c92565b005b34801561058657600080fd5b506105a1600480360381019061059c9190611df3565b610d82565b005b60606040518060400160405280600e81526020017f48616c6c6f7765654e6f6d696373000000000000000000000000000000000000815250905090565b60006105f46105ed610f44565b8484610f4c565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b60085481565b6000610641848484611117565b6106e18461064d610f44565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610697610f44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106dc9190611eb9565b610f4c565b600190509392505050565b60006009905090565b6000610797610702610f44565b848460046000610710610f44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107929190611eed565b610f4c565b6001905092915050565b6107a9610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90611f8f565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610964610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890611f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f484e4f4d49435300000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610be3610b4e610f44565b848460046000610b5c610f44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bde9190611eb9565b610f4c565b6001905092915050565b6000610c01610bfa610f44565b8484611117565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c9a610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90611f8f565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d8a610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90611f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90612021565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906120b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390612145565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161110a9190611d4e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906121d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612269565b60405180910390fd5b6000811161123a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611231906122fb565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112de5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113385750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611396576007548161134a84610913565b6113549190611eed565b1115611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c9061238d565b60405180910390fd5b5b600654811180156113e55750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b156114455780600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114399190611eed565b925050819055506116eb565b65048c2739500061145530610913565b101580156114705750600a60149054906101000a900460ff16155b80156114ca5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561151d576001600a60146101000a81548160ff02191690831515021790555060006114f530610913565b9050611500816116f0565b6000600a60146101000a81548160ff021916908315150217905550505b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461156c9190611eb9565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561161c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561162e5761162b8285611774565b90505b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461167d9190611eed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116e19190611d4e565b60405180910390a3505b505050565b60006116fb826118a3565b9050600081111561177057600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561176e573d6000803e3d6000fd5b505b5050565b60008060646008548561178791906123ad565b6117919190612436565b905060006064600954866117a591906123ad565b6117af9190612436565b905080826117bd9190611eed565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461180b9190611eed565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838561186d9190611eed565b60405161187a9190611d4e565b60405180910390a380828661188f9190611eb9565b6118999190611eb9565b9250505092915050565b600080600267ffffffffffffffff8111156118c1576118c0612467565b5b6040519080825280602002602001820160405280156118ef5781602001602082028036833780820191505090505b509050308160008151811061190757611906612496565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e191906124da565b816001815181106119f5576119f4612496565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a5c30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610f4c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611ac0959493929190612600565b600060405180830381600087803b158015611ada57600080fd5b505af1158015611aee573d6000803e3d6000fd5b5050505047915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b35578082015181840152602081019050611b1a565b83811115611b44576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b6682611afb565b611b708185611b06565b9350611b80818560208601611b17565b611b8981611b4a565b840191505092915050565b60006020820190508181036000830152611bae8184611b5b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611be682611bbb565b9050919050565b611bf681611bdb565b8114611c0157600080fd5b50565b600081359050611c1381611bed565b92915050565b6000819050919050565b611c2c81611c19565b8114611c3757600080fd5b50565b600081359050611c4981611c23565b92915050565b60008060408385031215611c6657611c65611bb6565b5b6000611c7485828601611c04565b9250506020611c8585828601611c3a565b9150509250929050565b60008115159050919050565b611ca481611c8f565b82525050565b6000602082019050611cbf6000830184611c9b565b92915050565b6000819050919050565b6000611cea611ce5611ce084611bbb565b611cc5565b611bbb565b9050919050565b6000611cfc82611ccf565b9050919050565b6000611d0e82611cf1565b9050919050565b611d1e81611d03565b82525050565b6000602082019050611d396000830184611d15565b92915050565b611d4881611c19565b82525050565b6000602082019050611d636000830184611d3f565b92915050565b600080600060608486031215611d8257611d81611bb6565b5b6000611d9086828701611c04565b9350506020611da186828701611c04565b9250506040611db286828701611c3a565b9150509250925092565b600060ff82169050919050565b611dd281611dbc565b82525050565b6000602082019050611ded6000830184611dc9565b92915050565b600060208284031215611e0957611e08611bb6565b5b6000611e1784828501611c04565b91505092915050565b611e2981611bdb565b82525050565b6000602082019050611e446000830184611e20565b92915050565b60008060408385031215611e6157611e60611bb6565b5b6000611e6f85828601611c04565b9250506020611e8085828601611c04565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ec482611c19565b9150611ecf83611c19565b925082821015611ee257611ee1611e8a565b5b828203905092915050565b6000611ef882611c19565b9150611f0383611c19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f3857611f37611e8a565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f79602083611b06565b9150611f8482611f43565b602082019050919050565b60006020820190508181036000830152611fa881611f6c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061200b602683611b06565b915061201682611faf565b604082019050919050565b6000602082019050818103600083015261203a81611ffe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061209d602483611b06565b91506120a882612041565b604082019050919050565b600060208201905081810360008301526120cc81612090565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061212f602283611b06565b915061213a826120d3565b604082019050919050565b6000602082019050818103600083015261215e81612122565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006121c1602583611b06565b91506121cc82612165565b604082019050919050565b600060208201905081810360008301526121f0816121b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612253602383611b06565b915061225e826121f7565b604082019050919050565b6000602082019050818103600083015261228281612246565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006122e5602983611b06565b91506122f082612289565b604082019050919050565b60006020820190508181036000830152612314816122d8565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000612377602883611b06565b91506123828261231b565b604082019050919050565b600060208201905081810360008301526123a68161236a565b9050919050565b60006123b882611c19565b91506123c383611c19565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123fc576123fb611e8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061244182611c19565b915061244c83611c19565b92508261245c5761245b612407565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506124d481611bed565b92915050565b6000602082840312156124f0576124ef611bb6565b5b60006124fe848285016124c5565b91505092915050565b6000819050919050565b600061252c61252761252284612507565b611cc5565b611c19565b9050919050565b61253c81612511565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61257781611bdb565b82525050565b6000612589838361256e565b60208301905092915050565b6000602082019050919050565b60006125ad82612542565b6125b7818561254d565b93506125c28361255e565b8060005b838110156125f35781516125da888261257d565b97506125e583612595565b9250506001810190506125c6565b5085935050505092915050565b600060a0820190506126156000830188611d3f565b6126226020830187612533565b818103604083015261263481866125a2565b90506126436060830185611e20565b6126506080830184611d3f565b969550505050505056fea26469706673582212209214074406d2b0d66c0a9240e35661abf1dad21e098a6e300e9cf97085966b6864736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80636bc87c3a116100b6578063962dfc751161006f578063962dfc751461046f578063a457c2d71461049a578063a9059cbb146104d7578063dd62ed3e14610514578063ea2f0b3714610551578063f2fde38b1461057a5761014b565b80636bc87c3a1461036f57806370a082311461039a578063715018a6146103d75780637d1db4a5146103ee5780638da5cb5b1461041957806395d89b41146104445761014b565b806323b872dd1161010857806323b872dd14610239578063313ce5671461027657806339509351146102a1578063437823ec146102de57806349bd5a5e146103075780635342acb4146103325761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806322976e0d1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b506101656105a3565b6040516101729190611b94565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190611c4f565b6105e0565b6040516101af9190611caa565b60405180910390f35b3480156101c457600080fd5b506101cd6105fe565b6040516101da9190611d24565b60405180910390f35b3480156101ef57600080fd5b506101f8610624565b6040516102059190611d4e565b60405180910390f35b34801561021a57600080fd5b5061022361062e565b6040516102309190611d4e565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190611d69565b610634565b60405161026d9190611caa565b60405180910390f35b34801561028257600080fd5b5061028b6106ec565b6040516102989190611dd8565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190611c4f565b6106f5565b6040516102d59190611caa565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611df3565b6107a1565b005b34801561031357600080fd5b5061031c610891565b6040516103299190611e2f565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190611df3565b6108b7565b6040516103669190611caa565b60405180910390f35b34801561037b57600080fd5b5061038461090d565b6040516103919190611d4e565b60405180910390f35b3480156103a657600080fd5b506103c160048036038101906103bc9190611df3565b610913565b6040516103ce9190611d4e565b60405180910390f35b3480156103e357600080fd5b506103ec61095c565b005b3480156103fa57600080fd5b50610403610aaf565b6040516104109190611d4e565b60405180910390f35b34801561042557600080fd5b5061042e610ab5565b60405161043b9190611e2f565b60405180910390f35b34801561045057600080fd5b50610459610ade565b6040516104669190611b94565b60405180910390f35b34801561047b57600080fd5b50610484610b1b565b6040516104919190611e2f565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190611c4f565b610b41565b6040516104ce9190611caa565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190611c4f565b610bed565b60405161050b9190611caa565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190611e4a565b610c0b565b6040516105489190611d4e565b60405180910390f35b34801561055d57600080fd5b5061057860048036038101906105739190611df3565b610c92565b005b34801561058657600080fd5b506105a1600480360381019061059c9190611df3565b610d82565b005b60606040518060400160405280600e81526020017f48616c6c6f7765654e6f6d696373000000000000000000000000000000000000815250905090565b60006105f46105ed610f44565b8484610f4c565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b60085481565b6000610641848484611117565b6106e18461064d610f44565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610697610f44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106dc9190611eb9565b610f4c565b600190509392505050565b60006009905090565b6000610797610702610f44565b848460046000610710610f44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107929190611eed565b610f4c565b6001905092915050565b6107a9610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90611f8f565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610964610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e890611f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f484e4f4d49435300000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610be3610b4e610f44565b848460046000610b5c610f44565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bde9190611eb9565b610f4c565b6001905092915050565b6000610c01610bfa610f44565b8484611117565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c9a610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90611f8f565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d8a610f44565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90611f8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90612021565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906120b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390612145565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161110a9190611d4e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906121d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612269565b60405180910390fd5b6000811161123a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611231906122fb565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112de5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113385750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611396576007548161134a84610913565b6113549190611eed565b1115611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c9061238d565b60405180910390fd5b5b600654811180156113e55750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b156114455780600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114399190611eed565b925050819055506116eb565b65048c2739500061145530610913565b101580156114705750600a60149054906101000a900460ff16155b80156114ca5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561151d576001600a60146101000a81548160ff02191690831515021790555060006114f530610913565b9050611500816116f0565b6000600a60146101000a81548160ff021916908315150217905550505b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461156c9190611eb9565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561161c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561162e5761162b8285611774565b90505b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461167d9190611eed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116e19190611d4e565b60405180910390a3505b505050565b60006116fb826118a3565b9050600081111561177057600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561176e573d6000803e3d6000fd5b505b5050565b60008060646008548561178791906123ad565b6117919190612436565b905060006064600954866117a591906123ad565b6117af9190612436565b905080826117bd9190611eed565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461180b9190611eed565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838561186d9190611eed565b60405161187a9190611d4e565b60405180910390a380828661188f9190611eb9565b6118999190611eb9565b9250505092915050565b600080600267ffffffffffffffff8111156118c1576118c0612467565b5b6040519080825280602002602001820160405280156118ef5781602001602082028036833780820191505090505b509050308160008151811061190757611906612496565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e191906124da565b816001815181106119f5576119f4612496565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a5c30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610f4c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611ac0959493929190612600565b600060405180830381600087803b158015611ada57600080fd5b505af1158015611aee573d6000803e3d6000fd5b5050505047915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b35578082015181840152602081019050611b1a565b83811115611b44576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b6682611afb565b611b708185611b06565b9350611b80818560208601611b17565b611b8981611b4a565b840191505092915050565b60006020820190508181036000830152611bae8184611b5b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611be682611bbb565b9050919050565b611bf681611bdb565b8114611c0157600080fd5b50565b600081359050611c1381611bed565b92915050565b6000819050919050565b611c2c81611c19565b8114611c3757600080fd5b50565b600081359050611c4981611c23565b92915050565b60008060408385031215611c6657611c65611bb6565b5b6000611c7485828601611c04565b9250506020611c8585828601611c3a565b9150509250929050565b60008115159050919050565b611ca481611c8f565b82525050565b6000602082019050611cbf6000830184611c9b565b92915050565b6000819050919050565b6000611cea611ce5611ce084611bbb565b611cc5565b611bbb565b9050919050565b6000611cfc82611ccf565b9050919050565b6000611d0e82611cf1565b9050919050565b611d1e81611d03565b82525050565b6000602082019050611d396000830184611d15565b92915050565b611d4881611c19565b82525050565b6000602082019050611d636000830184611d3f565b92915050565b600080600060608486031215611d8257611d81611bb6565b5b6000611d9086828701611c04565b9350506020611da186828701611c04565b9250506040611db286828701611c3a565b9150509250925092565b600060ff82169050919050565b611dd281611dbc565b82525050565b6000602082019050611ded6000830184611dc9565b92915050565b600060208284031215611e0957611e08611bb6565b5b6000611e1784828501611c04565b91505092915050565b611e2981611bdb565b82525050565b6000602082019050611e446000830184611e20565b92915050565b60008060408385031215611e6157611e60611bb6565b5b6000611e6f85828601611c04565b9250506020611e8085828601611c04565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ec482611c19565b9150611ecf83611c19565b925082821015611ee257611ee1611e8a565b5b828203905092915050565b6000611ef882611c19565b9150611f0383611c19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f3857611f37611e8a565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f79602083611b06565b9150611f8482611f43565b602082019050919050565b60006020820190508181036000830152611fa881611f6c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061200b602683611b06565b915061201682611faf565b604082019050919050565b6000602082019050818103600083015261203a81611ffe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061209d602483611b06565b91506120a882612041565b604082019050919050565b600060208201905081810360008301526120cc81612090565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061212f602283611b06565b915061213a826120d3565b604082019050919050565b6000602082019050818103600083015261215e81612122565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006121c1602583611b06565b91506121cc82612165565b604082019050919050565b600060208201905081810360008301526121f0816121b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612253602383611b06565b915061225e826121f7565b604082019050919050565b6000602082019050818103600083015261228281612246565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006122e5602983611b06565b91506122f082612289565b604082019050919050565b60006020820190508181036000830152612314816122d8565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000612377602883611b06565b91506123828261231b565b604082019050919050565b600060208201905081810360008301526123a68161236a565b9050919050565b60006123b882611c19565b91506123c383611c19565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123fc576123fb611e8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061244182611c19565b915061244c83611c19565b92508261245c5761245b612407565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506124d481611bed565b92915050565b6000602082840312156124f0576124ef611bb6565b5b60006124fe848285016124c5565b91505092915050565b6000819050919050565b600061252c61252761252284612507565b611cc5565b611c19565b9050919050565b61253c81612511565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61257781611bdb565b82525050565b6000612589838361256e565b60208301905092915050565b6000602082019050919050565b60006125ad82612542565b6125b7818561254d565b93506125c28361255e565b8060005b838110156125f35781516125da888261257d565b97506125e583612595565b9250506001810190506125c6565b5085935050505092915050565b600060a0820190506126156000830188611d3f565b6126226020830187612533565b818103604083015261263481866125a2565b90506126436060830185611e20565b6126506080830184611d3f565b969550505050505056fea26469706673582212209214074406d2b0d66c0a9240e35661abf1dad21e098a6e300e9cf97085966b6864736f6c63430008090033

Deployed Bytecode Sourcemap

24351:7097:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26177:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27008:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24484:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26454:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25107:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27177:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26363:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27451:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27911:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24532:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28681:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25146:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26557:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15859:148;;;;;;;;;;;;;:::i;:::-;;24814:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15216:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26268:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25185:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27674:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26682:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26857:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28034:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16162:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26177:83;26214:13;26247:5;;;;;;;;;;;;;;;;;26240:12;;26177:83;:::o;27008:161::-;27083:4;27100:39;27109:12;:10;:12::i;:::-;27123:7;27132:6;27100:8;:39::i;:::-;27157:4;27150:11;;27008:161;;;;:::o;24484:41::-;;;;;;;;;;;;;:::o;26454:95::-;26507:7;26534;;26527:14;;26454:95;:::o;25107:32::-;;;;:::o;27177:266::-;27275:4;27292:36;27302:6;27310:9;27321:6;27292:9;:36::i;:::-;27339:74;27348:6;27356:12;:10;:12::i;:::-;27406:6;27370:11;:19;27382:6;27370:19;;;;;;;;;;;;;;;:33;27390:12;:10;:12::i;:::-;27370:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;27339:8;:74::i;:::-;27431:4;27424:11;;27177:266;;;;;:::o;26363:83::-;26404:5;25089:1;26422:16;;26363:83;:::o;27451:215::-;27539:4;27556:80;27565:12;:10;:12::i;:::-;27579:7;27625:10;27588:11;:25;27600:12;:10;:12::i;:::-;27588:25;;;;;;;;;;;;;;;:34;27614:7;27588:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;27556:8;:80::i;:::-;27654:4;27647:11;;27451:215;;;;:::o;27911:111::-;15438:12;:10;:12::i;:::-;15428:22;;:6;;;;;;;;;;:22;;;15420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28010:4:::1;27980:18;:27;27999:7;27980:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;27911:111:::0;:::o;24532:28::-;;;;;;;;;;;;;:::o;28681:123::-;28745:4;28769:18;:27;28788:7;28769:27;;;;;;;;;;;;;;;;;;;;;;;;;28762:34;;28681:123;;;:::o;25146:32::-;;;;:::o;26557:117::-;26623:7;26650;:16;26658:7;26650:16;;;;;;;;;;;;;;;;26643:23;;26557:117;;;:::o;15859:148::-;15438:12;:10;:12::i;:::-;15428:22;;:6;;;;;;;;;;:22;;;15420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15966:1:::1;15929:40;;15950:6;::::0;::::1;;;;;;;;15929:40;;;;;;;;;;;;15997:1;15980:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15859:148::o:0;24814:42::-;;;;:::o;15216:79::-;15254:7;15281:6;;;;;;;;;;;15274:13;;15216:79;:::o;26268:87::-;26307:13;26340:7;;;;;;;;;;;;;;;;;26333:14;;26268:87;:::o;25185:77::-;;;;;;;;;;;;;:::o;27674:225::-;27767:4;27784:85;27793:12;:10;:12::i;:::-;27807:7;27853:15;27816:11;:25;27828:12;:10;:12::i;:::-;27816:25;;;;;;;;;;;;;;;:34;27842:7;27816:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;27784:8;:85::i;:::-;27887:4;27880:11;;27674:225;;;;:::o;26682:167::-;26760:4;26777:42;26787:12;:10;:12::i;:::-;26801:9;26812:6;26777:9;:42::i;:::-;26837:4;26830:11;;26682:167;;;;:::o;26857:143::-;26938:7;26965:11;:18;26977:5;26965:18;;;;;;;;;;;;;;;:27;26984:7;26965:27;;;;;;;;;;;;;;;;26958:34;;26857:143;;;;:::o;28034:110::-;15438:12;:10;:12::i;:::-;15428:22;;:6;;;;;;;;;;:22;;;15420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28131:5:::1;28101:18;:27;28120:7;28101:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;28034:110:::0;:::o;16162:244::-;15438:12;:10;:12::i;:::-;15428:22;;:6;;;;;;;;;;:22;;;15420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16271:1:::1;16251:22;;:8;:22;;;;16243:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16361:8;16332:38;;16353:6;::::0;::::1;;;;;;;;16332:38;;;;;;;;;;;;16390:8;16381:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16162:244:::0;:::o;7971:115::-;8024:15;8067:10;8052:26;;7971:115;:::o;28816:337::-;28926:1;28909:19;;:5;:19;;;;28901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29007:1;28988:21;;:7;:21;;;;28980:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29091:6;29061:11;:18;29073:5;29061:18;;;;;;;;;;;;;;;:27;29080:7;29061:27;;;;;;;;;;;;;;;:36;;;;29129:7;29113:32;;29122:5;29113:32;;;29138:6;29113:32;;;;;;:::i;:::-;;;;;;;;28816:337;;;:::o;29161:1378::-;29299:1;29283:18;;:4;:18;;;;29275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29376:1;29362:16;;:2;:16;;;;29354:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29446:1;29437:6;:10;29429:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29519:18;:24;29538:4;29519:24;;;;;;;;;;;;;;;;;;;;;;;;;29518:25;:52;;;;;29548:18;:22;29567:2;29548:22;;;;;;;;;;;;;;;;;;;;;;;;;29547:23;29518:52;:75;;;;;29580:13;;;;;;;;;;;29574:19;;:2;:19;;;;29518:75;29515:184;;;29642:12;;29632:6;29616:13;29626:2;29616:9;:13::i;:::-;:22;;;;:::i;:::-;:38;;29608:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;29515:184;29737:7;;29728:6;:16;:51;;;;;29757:7;:22;29773:4;29757:22;;;;;;;;;;;;;;;;29748:6;:31;29728:51;29724:808;;;29807:6;29781:7;:22;29797:4;29781:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;29724:808;;;24916:12;29845:24;29863:4;29845:9;:24::i;:::-;:49;;:62;;;;;29899:8;;;;;;;;;;;29898:9;29845:62;:87;;;;;29919:13;;;;;;;;;;;29911:21;;:4;:21;;;;29845:87;29841:269;;;29960:4;29949:8;;:15;;;;;;;;;;;;;;;;;;29979:18;30000:24;30018:4;30000:9;:24::i;:::-;29979:45;;30039:28;30056:10;30039:16;:28::i;:::-;30093:5;30082:8;;:16;;;;;;;;;;;;;;;;;;29934:176;29841:269;30147:6;30130:7;:13;30138:4;30130:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;30164:22;30189:6;30164:31;;30304:18;:24;30323:4;30304:24;;;;;;;;;;;;;;;;;;;;;;;;;30303:25;:52;;;;;30333:18;:22;30352:2;30333:22;;;;;;;;;;;;;;;;;;;;;;;;;30332:23;30303:52;30300:124;;;30388:24;30399:6;30407:4;30388:10;:24::i;:::-;30371:41;;30300:124;30460:14;30445:7;:11;30453:2;30445:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;30505:2;30490:34;;30499:4;30490:34;;;30509:14;30490:34;;;;;;:::i;:::-;;;;;;;;29820:712;29724:808;29161:1378;;;:::o;30557:212::-;30619:17;30639:24;30656:6;30639:16;:24::i;:::-;30619:44;;30700:1;30688:9;:13;30684:77;;;30724:16;;;;;;;;;;;30716:34;;:45;30751:9;30716:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30684:77;30608:161;30557:212;:::o;28258:405::-;28325:7;28345:20;28393:3;28377:13;;28368:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;28345:51;;28408:20;28456:3;28440:13;;28431:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;28408:51;;28512:12;28497;:27;;;;:::i;:::-;28471:7;:22;28487:4;28471:22;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;28564:4;28540:59;;28550:4;28540:59;;;28586:12;28571;:27;;;;:::i;:::-;28540:59;;;;;;:::i;:::-;;;;;;;;28642:12;28627;28618:6;:21;;;;:::i;:::-;:36;;;;:::i;:::-;28610:45;;;;28258:405;;;;:::o;30789:649::-;30853:7;30933:21;30971:1;30957:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30933:40;;31002:4;30984;30989:1;30984:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31028:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31018:4;31023:1;31018:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31063:62;31080:4;31095:15;;;;;;;;;;;31113:11;31063:8;:62::i;:::-;31164:15;;;;;;;;;;;:66;;;31245:11;31271:1;31315:4;31342;31362:15;31164:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31407:21;31399:31;;;30789:649;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:619::-;4901:6;4909;4917;4966:2;4954:9;4945:7;4941:23;4937:32;4934:119;;;4972:79;;:::i;:::-;4934:119;5092:1;5117:53;5162:7;5153:6;5142:9;5138:22;5117:53;:::i;:::-;5107:63;;5063:117;5219:2;5245:53;5290:7;5281:6;5270:9;5266:22;5245:53;:::i;:::-;5235:63;;5190:118;5347:2;5373:53;5418:7;5409:6;5398:9;5394:22;5373:53;:::i;:::-;5363:63;;5318:118;4824:619;;;;;:::o;5449:86::-;5484:7;5524:4;5517:5;5513:16;5502:27;;5449:86;;;:::o;5541:112::-;5624:22;5640:5;5624:22;:::i;:::-;5619:3;5612:35;5541:112;;:::o;5659:214::-;5748:4;5786:2;5775:9;5771:18;5763:26;;5799:67;5863:1;5852:9;5848:17;5839:6;5799:67;:::i;:::-;5659:214;;;;:::o;5879:329::-;5938:6;5987:2;5975:9;5966:7;5962:23;5958:32;5955:119;;;5993:79;;:::i;:::-;5955:119;6113:1;6138:53;6183:7;6174:6;6163:9;6159:22;6138:53;:::i;:::-;6128:63;;6084:117;5879:329;;;;:::o;6214:118::-;6301:24;6319:5;6301:24;:::i;:::-;6296:3;6289:37;6214:118;;:::o;6338:222::-;6431:4;6469:2;6458:9;6454:18;6446:26;;6482:71;6550:1;6539:9;6535:17;6526:6;6482:71;:::i;:::-;6338:222;;;;:::o;6566:474::-;6634:6;6642;6691:2;6679:9;6670:7;6666:23;6662:32;6659:119;;;6697:79;;:::i;:::-;6659:119;6817:1;6842:53;6887:7;6878:6;6867:9;6863:22;6842:53;:::i;:::-;6832:63;;6788:117;6944:2;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6915:118;6566:474;;;;;:::o;7046:180::-;7094:77;7091:1;7084:88;7191:4;7188:1;7181:15;7215:4;7212:1;7205:15;7232:191;7272:4;7292:20;7310:1;7292:20;:::i;:::-;7287:25;;7326:20;7344:1;7326:20;:::i;:::-;7321:25;;7365:1;7362;7359:8;7356:34;;;7370:18;;:::i;:::-;7356:34;7415:1;7412;7408:9;7400:17;;7232:191;;;;:::o;7429:305::-;7469:3;7488:20;7506:1;7488:20;:::i;:::-;7483:25;;7522:20;7540:1;7522:20;:::i;:::-;7517:25;;7676:1;7608:66;7604:74;7601:1;7598:81;7595:107;;;7682:18;;:::i;:::-;7595:107;7726:1;7723;7719:9;7712:16;;7429:305;;;;:::o;7740:182::-;7880:34;7876:1;7868:6;7864:14;7857:58;7740:182;:::o;7928:366::-;8070:3;8091:67;8155:2;8150:3;8091:67;:::i;:::-;8084:74;;8167:93;8256:3;8167:93;:::i;:::-;8285:2;8280:3;8276:12;8269:19;;7928:366;;;:::o;8300:419::-;8466:4;8504:2;8493:9;8489:18;8481:26;;8553:9;8547:4;8543:20;8539:1;8528:9;8524:17;8517:47;8581:131;8707:4;8581:131;:::i;:::-;8573:139;;8300:419;;;:::o;8725:225::-;8865:34;8861:1;8853:6;8849:14;8842:58;8934:8;8929:2;8921:6;8917:15;8910:33;8725:225;:::o;8956:366::-;9098:3;9119:67;9183:2;9178:3;9119:67;:::i;:::-;9112:74;;9195:93;9284:3;9195:93;:::i;:::-;9313:2;9308:3;9304:12;9297:19;;8956:366;;;:::o;9328:419::-;9494:4;9532:2;9521:9;9517:18;9509:26;;9581:9;9575:4;9571:20;9567:1;9556:9;9552:17;9545:47;9609:131;9735:4;9609:131;:::i;:::-;9601:139;;9328:419;;;:::o;9753:223::-;9893:34;9889:1;9881:6;9877:14;9870:58;9962:6;9957:2;9949:6;9945:15;9938:31;9753:223;:::o;9982:366::-;10124:3;10145:67;10209:2;10204:3;10145:67;:::i;:::-;10138:74;;10221:93;10310:3;10221:93;:::i;:::-;10339:2;10334:3;10330:12;10323:19;;9982:366;;;:::o;10354:419::-;10520:4;10558:2;10547:9;10543:18;10535:26;;10607:9;10601:4;10597:20;10593:1;10582:9;10578:17;10571:47;10635:131;10761:4;10635:131;:::i;:::-;10627:139;;10354:419;;;:::o;10779:221::-;10919:34;10915:1;10907:6;10903:14;10896:58;10988:4;10983:2;10975:6;10971:15;10964:29;10779:221;:::o;11006:366::-;11148:3;11169:67;11233:2;11228:3;11169:67;:::i;:::-;11162:74;;11245:93;11334:3;11245:93;:::i;:::-;11363:2;11358:3;11354:12;11347:19;;11006:366;;;:::o;11378:419::-;11544:4;11582:2;11571:9;11567:18;11559:26;;11631:9;11625:4;11621:20;11617:1;11606:9;11602:17;11595:47;11659:131;11785:4;11659:131;:::i;:::-;11651:139;;11378:419;;;:::o;11803:224::-;11943:34;11939:1;11931:6;11927:14;11920:58;12012:7;12007:2;11999:6;11995:15;11988:32;11803:224;:::o;12033:366::-;12175:3;12196:67;12260:2;12255:3;12196:67;:::i;:::-;12189:74;;12272:93;12361:3;12272:93;:::i;:::-;12390:2;12385:3;12381:12;12374:19;;12033:366;;;:::o;12405:419::-;12571:4;12609:2;12598:9;12594:18;12586:26;;12658:9;12652:4;12648:20;12644:1;12633:9;12629:17;12622:47;12686:131;12812:4;12686:131;:::i;:::-;12678:139;;12405:419;;;:::o;12830:222::-;12970:34;12966:1;12958:6;12954:14;12947:58;13039:5;13034:2;13026:6;13022:15;13015:30;12830:222;:::o;13058:366::-;13200:3;13221:67;13285:2;13280:3;13221:67;:::i;:::-;13214:74;;13297:93;13386:3;13297:93;:::i;:::-;13415:2;13410:3;13406:12;13399:19;;13058:366;;;:::o;13430:419::-;13596:4;13634:2;13623:9;13619:18;13611:26;;13683:9;13677:4;13673:20;13669:1;13658:9;13654:17;13647:47;13711:131;13837:4;13711:131;:::i;:::-;13703:139;;13430:419;;;:::o;13855:228::-;13995:34;13991:1;13983:6;13979:14;13972:58;14064:11;14059:2;14051:6;14047:15;14040:36;13855:228;:::o;14089:366::-;14231:3;14252:67;14316:2;14311:3;14252:67;:::i;:::-;14245:74;;14328:93;14417:3;14328:93;:::i;:::-;14446:2;14441:3;14437:12;14430:19;;14089:366;;;:::o;14461:419::-;14627:4;14665:2;14654:9;14650:18;14642:26;;14714:9;14708:4;14704:20;14700:1;14689:9;14685:17;14678:47;14742:131;14868:4;14742:131;:::i;:::-;14734:139;;14461:419;;;:::o;14886:227::-;15026:34;15022:1;15014:6;15010:14;15003:58;15095:10;15090:2;15082:6;15078:15;15071:35;14886:227;:::o;15119:366::-;15261:3;15282:67;15346:2;15341:3;15282:67;:::i;:::-;15275:74;;15358:93;15447:3;15358:93;:::i;:::-;15476:2;15471:3;15467:12;15460:19;;15119:366;;;:::o;15491:419::-;15657:4;15695:2;15684:9;15680:18;15672:26;;15744:9;15738:4;15734:20;15730:1;15719:9;15715:17;15708:47;15772:131;15898:4;15772:131;:::i;:::-;15764:139;;15491:419;;;:::o;15916:348::-;15956:7;15979:20;15997:1;15979:20;:::i;:::-;15974:25;;16013:20;16031:1;16013:20;:::i;:::-;16008:25;;16201:1;16133:66;16129:74;16126:1;16123:81;16118:1;16111:9;16104:17;16100:105;16097:131;;;16208:18;;:::i;:::-;16097:131;16256:1;16253;16249:9;16238:20;;15916:348;;;;:::o;16270:180::-;16318:77;16315:1;16308:88;16415:4;16412:1;16405:15;16439:4;16436:1;16429:15;16456:185;16496:1;16513:20;16531:1;16513:20;:::i;:::-;16508:25;;16547:20;16565:1;16547:20;:::i;:::-;16542:25;;16586:1;16576:35;;16591:18;;:::i;:::-;16576:35;16633:1;16630;16626:9;16621:14;;16456:185;;;;:::o;16647:180::-;16695:77;16692:1;16685:88;16792:4;16789:1;16782:15;16816:4;16813:1;16806:15;16833:180;16881:77;16878:1;16871:88;16978:4;16975:1;16968:15;17002:4;16999:1;16992:15;17019:143;17076:5;17107:6;17101:13;17092:22;;17123:33;17150:5;17123:33;:::i;:::-;17019:143;;;;:::o;17168:351::-;17238:6;17287:2;17275:9;17266:7;17262:23;17258:32;17255:119;;;17293:79;;:::i;:::-;17255:119;17413:1;17438:64;17494:7;17485:6;17474:9;17470:22;17438:64;:::i;:::-;17428:74;;17384:128;17168:351;;;;:::o;17525:85::-;17570:7;17599:5;17588:16;;17525:85;;;:::o;17616:158::-;17674:9;17707:61;17725:42;17734:32;17760:5;17734:32;:::i;:::-;17725:42;:::i;:::-;17707:61;:::i;:::-;17694:74;;17616:158;;;:::o;17780:147::-;17875:45;17914:5;17875:45;:::i;:::-;17870:3;17863:58;17780:147;;:::o;17933:114::-;18000:6;18034:5;18028:12;18018:22;;17933:114;;;:::o;18053:184::-;18152:11;18186:6;18181:3;18174:19;18226:4;18221:3;18217:14;18202:29;;18053:184;;;;:::o;18243:132::-;18310:4;18333:3;18325:11;;18363:4;18358:3;18354:14;18346:22;;18243:132;;;:::o;18381:108::-;18458:24;18476:5;18458:24;:::i;:::-;18453:3;18446:37;18381:108;;:::o;18495:179::-;18564:10;18585:46;18627:3;18619:6;18585:46;:::i;:::-;18663:4;18658:3;18654:14;18640:28;;18495:179;;;;:::o;18680:113::-;18750:4;18782;18777:3;18773:14;18765:22;;18680:113;;;:::o;18829:732::-;18948:3;18977:54;19025:5;18977:54;:::i;:::-;19047:86;19126:6;19121:3;19047:86;:::i;:::-;19040:93;;19157:56;19207:5;19157:56;:::i;:::-;19236:7;19267:1;19252:284;19277:6;19274:1;19271:13;19252:284;;;19353:6;19347:13;19380:63;19439:3;19424:13;19380:63;:::i;:::-;19373:70;;19466:60;19519:6;19466:60;:::i;:::-;19456:70;;19312:224;19299:1;19296;19292:9;19287:14;;19252:284;;;19256:14;19552:3;19545:10;;18953:608;;;18829:732;;;;:::o;19567:831::-;19830:4;19868:3;19857:9;19853:19;19845:27;;19882:71;19950:1;19939:9;19935:17;19926:6;19882:71;:::i;:::-;19963:80;20039:2;20028:9;20024:18;20015:6;19963:80;:::i;:::-;20090:9;20084:4;20080:20;20075:2;20064:9;20060:18;20053:48;20118:108;20221:4;20212:6;20118:108;:::i;:::-;20110:116;;20236:72;20304:2;20293:9;20289:18;20280:6;20236:72;:::i;:::-;20318:73;20386:3;20375:9;20371:19;20362:6;20318:73;:::i;:::-;19567:831;;;;;;;;:::o

Swarm Source

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