ETH Price: $2,322.68 (-1.03%)

Token

GOFUNDMEINU (GFMI)
 

Overview

Max Total Supply

6,100,000,000 GFMI

Holders

88

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
14,997,762.048103242 GFMI

Value
$0.00
0xd2b93be05396f16a038716d2ea4c8fb547d92a0d
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:
TokenCutter

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-06
*/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;


// TG: https://t.me/GoFundMeInu
// Twitter: https://twitter.com/gofundmeinu
// Website https://gofundmeinu.io



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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _transferOwnership(address(0));
    }

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

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

// File: contracts/ProofNonReflectionFactory.sol



pragma solidity ^0.8.0;
interface IBURNER {
    function burnEmUp() external payable;    
}

 interface IUniswapV2Factory {
     function createPair(address tokenA, address tokenB) external returns (address pair);
 }
 
 interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 factory() external pure returns (address);
     function WETH() external pure returns (address);
     function addLiquidityETH(
         address token,
         uint amountTokenDesired,
         uint amountTokenMin,
         uint amountETHMin,
         address to,
         uint deadline
     ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidityETH(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountToken, uint amountETH);     
 }

 interface ITeamFinanceLocker {
        function lockTokens(address _tokenAddress, address _withdrawalAddress, uint256 _amount, uint256 _unlockTime) external payable returns (uint256 _id);
}

interface ITokenCutter {
    function swapTradingStatus() external;       
    function setLaunchedAt() external;       
    function cancelToken() external;       
}

library Fees {
    struct allFees {
        uint256 mainFee;
        uint256 mainFeeOnSell;
        uint256 lpFee;
        uint256 lpFeeOnSell;
        uint256 devFee;
        uint256 devFeeOnSell;
    }
}

contract TokenCutter is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    address payable public hldBurnerAddress;
    address public hldAdmin;

    bool public restrictWhales = true;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    uint256 public hldFee = 2;

    uint256 public mainFee;
    uint256 public lpFee;
    uint256 public devFee;

    uint256 public mainFeeOnSell;
    uint256 public lpFeeOnSell;
    uint256 public devFeeOnSell;
    
    uint256 public totalFee;
    uint256 public totalFeeIfSelling;

    IUniswapV2Router02 public router;
    address public pair;
    address public factory;
    address public tokenOwner;
    address payable public devWallet;
    address payable public mainWallet;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingStatus = true;

    mapping (address => bool) public bots;

    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 public swapThreshold;
    

     constructor (string memory tokenName, string memory tokenSymbol, uint256 initialSupply, address owner, address dev, address main,
                    address routerAddress, address initialHldAdmin, address initialHldBurner, Fees.allFees memory fees) {


        _name = tokenName;
        _symbol = tokenSymbol;
        _totalSupply = initialSupply;

        //Tx & Wallet Limits
        _maxTxAmount = initialSupply * 2 / 200;
        _walletMax = initialSupply * 3 / 100;    
        swapThreshold = initialSupply * 5 / 4000;

        router = IUniswapV2Router02(routerAddress);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        factory = msg.sender;
       
        isFeeExempt[address(this)] = true;
        isFeeExempt[factory] = true;
        isFeeExempt[owner] = true;

        isTxLimitExempt[owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[factory] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;
        
        //Fees 
        lpFee = fees.lpFee;
        lpFeeOnSell = fees.lpFeeOnSell;
        devFee = fees.devFee;
        devFeeOnSell = fees.devFeeOnSell;
        mainFee = fees.mainFee;
        mainFeeOnSell = fees.mainFeeOnSell;

        totalFee = devFee.add(lpFee).add(mainFee).add(hldFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(mainFeeOnSell).add(hldFee);   


        require(totalFee <= 12, "Too high fee");
        require(totalFeeIfSelling <= 17, "Too high sell fee");
        
        tokenOwner = owner;
        devWallet = payable(dev);
        mainWallet = payable(main);
        hldBurnerAddress = payable(initialHldBurner);
        hldAdmin = initialHldAdmin;

        //Initial supply 
        uint256 forLP = initialSupply * 95 / 100; //95%
        uint256 forOwner = initialSupply - forLP; //5%

        _balances[msg.sender] += forLP;
        _balances[owner] += forOwner;

        emit Transfer(address(0), msg.sender, forLP);
        emit Transfer(address(0), owner, forOwner);
                }

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

    modifier onlyHldAdmin() {
        require(hldAdmin == _msgSender(), "Ownable: caller is not the hldAdmin");
        _;
    }

    modifier onlyOwner() {
        require(tokenOwner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    modifier onlyFactory() {
        require(factory == _msgSender(), "Ownable: caller is not the factory");
        _;
    }

    //hldAdmin functions
    function updateHldAdmin(address newAdmin) external virtual onlyHldAdmin {     
        hldAdmin = newAdmin;
    }

    function updateHldBurnerAddress(address newhldBurnerAddress) external onlyHldAdmin {     
        hldBurnerAddress = payable(newhldBurnerAddress);
    }    
    
    function setBots(address[] memory bots_) external onlyHldAdmin {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
        
    //Factory functions
    function swapTradingStatus() external onlyFactory {
        tradingStatus = !tradingStatus;
    }

    function setLaunchedAt() external onlyFactory {
        require(launchedAt == 0, "already launched");
        launchedAt = block.timestamp;
    }          
 
    function cancelToken() external onlyFactory {
        isFeeExempt[address(router)] = true;
        isTxLimitExempt[address(router)] = true;
        isTxLimitExempt[tokenOwner] = true;
        tradingStatus = true;
    }         

    //Owner functions
    function changeFees(uint256 initialMainFee, uint256 initialMainFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell,
        uint256 initialDevFee, uint256 initialDevFeeOnSell) external onlyOwner {

        mainFee = initialMainFee;
        lpFee = initialLpFee;
        devFee = initialDevFee;

        mainFeeOnSell = initialMainFeeOnSell;
        lpFeeOnSell = initialLpFeeOnSell;
        devFeeOnSell = initialDevFeeOnSell;

        totalFee = devFee.add(lpFee).add(hldFee).add(mainFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(hldFee).add(mainFeeOnSell);

        require(totalFee <= 12, "Too high fee");
        require(totalFeeIfSelling <= 17, "Too high fee");
    }     

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 24 hours, "too soon");
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 24 hours, "too soon");        
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external onlyOwner {
        require(launchedAt != 0, "!launched");        
        require(block.timestamp >= launchedAt + 24 hours, "too soon");                
        restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(launchedAt != 0, "!launched");        
        require(block.timestamp >= launchedAt + 24 hours, "too soon");        
        isTxLimitExempt[holder] = exempt;
    }


    function reduceHldFee() external onlyOwner {
        require(hldFee == 2, "!already reduced");                
        require(launchedAt != 0, "!launched");        
        require(block.timestamp >= launchedAt + 72 hours, "too soon");

        hldFee = 1;
        totalFee = devFee.add(lpFee).add(hldFee).add(mainFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(hldFee).add(mainFeeOnSell); 
    }    


    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    } 

    function setMainWallet(address payable newMainWallet) external onlyOwner {
        mainWallet = newMainWallet;
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }       

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    
    /**
     * @dev Returns the name of the token.
     */
    function name() external view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() external view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) external virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     *
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        require(tradingStatus, "Trading Closed");
        require(!bots[sender] && !bots[recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "Max TX Amount");

        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax, "Max Wallet Amount");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        if(sender == pair && block.timestamp < launchedAt + 1 minutes) { // 4-5 blocks
            revert("Trading Closed");
        }

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }    

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }    

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */


    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];

        uint256 amountToLiquify;
        uint256 devBalance;
        uint256 hldBalance;
        uint256 amountEthLiquidity;        

        // Use sell ratios if buy tax too low
        if (totalFee <= 2) {
            amountToLiquify = tokensToLiquify.mul(lpFeeOnSell).div(totalFeeIfSelling).div(2);
        } else {
            amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div(2);                 
        }

        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;


        // Use sell ratios if buy tax too low
        if (totalFee <= 2) {
            devBalance = amountETH.mul(devFeeOnSell).div(totalFeeIfSelling);
            hldBalance = amountETH.mul(hldFee).div(totalFeeIfSelling);
            amountEthLiquidity = amountETH.mul(lpFeeOnSell).div(totalFeeIfSelling).div(2);

        } else {
            devBalance = amountETH.mul(devFee).div(totalFee);
            hldBalance = amountETH.mul(hldFee).div(totalFee);
            amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2);            
        }

        uint256 amountEthMain = amountETH.sub(devBalance).sub(hldBalance).sub(amountEthLiquidity);

        if(amountETH > 0){
            IBURNER(hldBurnerAddress).burnEmUp{value: hldBalance}();            
            devWallet.transfer(devBalance);
            mainWallet.transfer(amountEthMain);
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountEthLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                0x000000000000000000000000000000000000dEaD,
                block.timestamp
            );
        }      
    
    }

    receive() external payable { }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"dev","type":"address"},{"internalType":"address","name":"main","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"initialHldAdmin","type":"address"},{"internalType":"address","name":"initialHldBurner","type":"address"},{"components":[{"internalType":"uint256","name":"mainFee","type":"uint256"},{"internalType":"uint256","name":"mainFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"devFeeOnSell","type":"uint256"}],"internalType":"struct Fees.allFees","name":"fees","type":"tuple"}],"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":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialMainFee","type":"uint256"},{"internalType":"uint256","name":"initialMainFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialDevFee","type":"uint256"},{"internalType":"uint256","name":"initialDevFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldBurnerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceHldFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunchedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMainWallet","type":"address"}],"name":"setMainWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"updateHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newhldBurnerAddress","type":"address"}],"name":"updateHldBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff60a01b1916600160a01b1790556002600b556019805461010160a81b61ffff60a81b199091161790553480156200004057600080fd5b50604051620031d4380380620031d4833981016040819052620000639162000824565b8951620000789060039060208d019062000631565b5088516200008e9060049060208c019062000631565b50600288815560c890620000a4908a906200098e565b620000b091906200096b565b601b556064620000c28960036200098e565b620000ce91906200096b565b601c55610fa0620000e18960056200098e565b620000ed91906200096b565b601d55601480546001600160a01b0319166001600160a01b0386169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200014557600080fd5b505afa1580156200015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000180919062000806565b6001600160a01b031663c9c65396601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001dd57600080fd5b505afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000218919062000806565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200026057600080fd5b505af115801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b919062000806565b601580546001600160a01b039283166001600160a01b03199182161782553060008181526001602081815260408084206014548916855282528084206000199055601680549096163317865593835260078152838320805460ff19908116841790915585548816845284842080548216841790558e88168452848420805482168417905560088252848420805482168417905595548716835283832080548716831790559354909516815281812080548516861790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805485168617905580527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805490931690931790915590820151600d81905560608301516010556080830151600e81905560a08401516011558351600c81905584840151600f55600b5462000410949093620003fc938492909190620015aa6200061c821b17901c565b6200061c60201b620015aa1790919060201c565b60128190555062000442600b54620003fc600f54620003fc6010546011546200061c60201b620015aa1790919060201c565b601355601254600c10156200048d5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064015b60405180910390fd5b60116013541115620004d65760405162461bcd60e51b8152602060048201526011602482015270546f6f20686967682073656c6c2066656560781b604482015260640162000484565b601780546001600160a01b03199081166001600160a01b038a81169190911790925560188054821689841617905560198054821688841617905560058054821685841617905560068054909116918516919091179055600060646200053d8a605f6200098e565b6200054991906200096b565b9050600062000559828b620009b0565b336000908152602081905260408120805492935084929091906200057f90849062000950565b90915550506001600160a01b03891660009081526020819052604081208054839290620005ae90849062000950565b90915550506040518281523390600090600080516020620031b48339815191529060200160405180910390a36040518181526001600160a01b038a1690600090600080516020620031b48339815191529060200160405180910390a350505050505050505050505062000a33565b60006200062a828462000950565b9392505050565b8280546200063f90620009ca565b90600052602060002090601f016020900481019282620006635760008555620006ae565b82601f106200067e57805160ff1916838001178555620006ae565b82800160010185558215620006ae579182015b82811115620006ae57825182559160200191906001019062000691565b50620006bc929150620006c0565b5090565b5b80821115620006bc5760008155600101620006c1565b80516001600160a01b0381168114620006ef57600080fd5b919050565b600082601f8301126200070657600080fd5b81516001600160401b0381111562000722576200072262000a1d565b602062000738601f8301601f191682016200091d565b82815285828487010111156200074d57600080fd5b60005b838110156200076d57858101830151828201840152820162000750565b838111156200077f5760008385840101525b5095945050505050565b600060c082840312156200079c57600080fd5b60405160c081016001600160401b0381118282101715620007c157620007c162000a1d565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b6000602082840312156200081957600080fd5b6200062a82620006d7565b6000806000806000806000806000806101e08b8d0312156200084557600080fd5b8a516001600160401b03808211156200085d57600080fd5b6200086b8e838f01620006f4565b9b5060208d01519150808211156200088257600080fd5b50620008918d828e01620006f4565b99505060408b01519750620008a960608c01620006d7565b9650620008b960808c01620006d7565b9550620008c960a08c01620006d7565b9450620008d960c08c01620006d7565b9350620008e960e08c01620006d7565b9250620008fa6101008c01620006d7565b91506200090c8c6101208d0162000789565b90509295989b9194979a5092959850565b604051601f8201601f191681016001600160401b038111828210171562000948576200094862000a1d565b604052919050565b6000821982111562000966576200096662000a07565b500190565b6000826200098957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620009ab57620009ab62000a07565b500290565b600082821015620009c557620009c562000a07565b500390565b600181811c90821680620009df57607f821691505b6020821081141562000a0157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6127718062000a436000396000f3fe6080604052600436106103855760003560e01c80638b42507f116101d1578063c45a015511610102578063dd62ed3e116100a0578063f7c722051161006f578063f7c7220514610a47578063f887ea4014610a67578063fabe628314610a87578063fbd7575314610aa757600080fd5b8063dd62ed3e146109ab578063e5d85108146109f1578063e66b1d1e14610a07578063ede1588f14610a2757600080fd5b8063d0a5eb4e116100dc578063d0a5eb4e14610935578063d1db380914610955578063d4fb9a011461096a578063d920334e1461098b57600080fd5b8063c45a0155146108df578063ca987b0e146108ff578063cb29813c1461091557600080fd5b8063a457c2d71161016f578063b515566a11610149578063b515566a14610859578063bb542ef014610879578063bf56b37114610899578063bfd79284146108af57600080fd5b8063a457c2d7146107f9578063a8aa1b3114610819578063a9059cbb1461083957600080fd5b806395d89b41116101ab57806395d89b411461078e578063985b9db0146107a3578063a3a2e89e146107b9578063a3e67610146107d957600080fd5b80638b42507f146107285780638ea5220f146107585780639502c4261461077857600080fd5b80633dab5269116102b65780636827e764116102545780637c0ff205116102235780637c0ff205146106c65780637d1db4a5146106dc5780637db1342c146106f2578063807c2d9c1461071257600080fd5b80636827e76414610644578063704ce43e1461065a57806370a0823114610670578063774b5847146106a657600080fd5b806343d49dda1161029057806343d49dda146105cd57806344de2e4c146105ed5780634a74bb021461060e578063546a88111461062f57600080fd5b80633dab52691461054d5780633f4218e01461056d5780634355855a1461059d57600080fd5b806323b62b7511610323578063273123b7116102fd578063273123b7146104dc5780632b112e49146104fc578063313ce56714610511578063395093511461052d57600080fd5b806323b62b751461046f57806323b872dd146104a757806327193bc4146104c757600080fd5b80630963da6c1161035f5780630963da6c1461040c57806318160ddd146104225780631df4ccfc146104375780631f53ac021461044d57600080fd5b80630445b6671461039157806306fdde03146103ba578063095ea7b3146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a7601d5481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103cf610abc565b6040516103b19190612456565b3480156103e857600080fd5b506103fc6103f736600461229d565b610b4e565b60405190151581526020016103b1565b34801561041857600080fd5b506103a7600c5481565b34801561042e57600080fd5b506002546103a7565b34801561044357600080fd5b506103a760125481565b34801561045957600080fd5b5061046d6104683660046121b4565b610b66565b005b34801561047b57600080fd5b5060195461048f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b3480156104b357600080fd5b506103fc6104c2366004612227565b610bbb565b3480156104d357600080fd5b5061046d610be2565b3480156104e857600080fd5b5061046d6104f73660046121b4565b610c55565b34801561050857600080fd5b506103a7610ca0565b34801561051d57600080fd5b50604051600981526020016103b1565b34801561053957600080fd5b506103fc61054836600461229d565b610d0d565b34801561055957600080fd5b5061046d6105683660046123b0565b610d4c565b34801561057957600080fd5b506103fc6105883660046121b4565b60076020526000908152604090205460ff1681565b3480156105a957600080fd5b506103fc6105b83660046121b4565b60096020526000908152604090205460ff1681565b3480156105d957600080fd5b5061046d6105e83660046121b4565b610d98565b3480156105f957600080fd5b506006546103fc90600160a01b900460ff1681565b34801561061a57600080fd5b506019546103fc90600160a81b900460ff1681565b34801561063b57600080fd5b5061046d610de4565b34801561065057600080fd5b506103a7600e5481565b34801561066657600080fd5b506103a7600d5481565b34801561067c57600080fd5b506103a761068b3660046121b4565b6001600160a01b031660009081526020819052604090205490565b3480156106b257600080fd5b5060055461048f906001600160a01b031681565b3480156106d257600080fd5b506103a760105481565b3480156106e857600080fd5b506103a7601b5481565b3480156106fe57600080fd5b5061046d61070d3660046123cc565b610e7c565b34801561071e57600080fd5b506103a7601c5481565b34801561073457600080fd5b506103fc6107433660046121b4565b60086020526000908152604090205460ff1681565b34801561076457600080fd5b5060185461048f906001600160a01b031681565b34801561078457600080fd5b506103a760115481565b34801561079a57600080fd5b506103cf610ef9565b3480156107af57600080fd5b506103a7600f5481565b3480156107c557600080fd5b5061046d6107d4366004612268565b610f08565b3480156107e557600080fd5b5060175461048f906001600160a01b031681565b34801561080557600080fd5b506103fc61081436600461229d565b610f5d565b34801561082557600080fd5b5060155461048f906001600160a01b031681565b34801561084557600080fd5b506103fc61085436600461229d565b610ffa565b34801561086557600080fd5b5061046d6108743660046122c9565b611008565b34801561088557600080fd5b5061046d6108943660046121b4565b61109e565b3480156108a557600080fd5b506103a7600a5481565b3480156108bb57600080fd5b506103fc6108ca3660046121b4565b601a6020526000908152604090205460ff1681565b3480156108eb57600080fd5b5060165461048f906001600160a01b031681565b34801561090b57600080fd5b506103a760135481565b34801561092157600080fd5b5061046d610930366004612413565b6110ea565b34801561094157600080fd5b5061046d6109503660046121b4565b611205565b34801561096157600080fd5b5061046d611251565b34801561097657600080fd5b506019546103fc90600160b01b900460ff1681565b34801561099757600080fd5b5061046d6109a63660046123cc565b61135d565b3480156109b757600080fd5b506103a76109c63660046121ee565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109fd57600080fd5b506103a7600b5481565b348015610a1357600080fd5b5061046d610a22366004612395565b6113da565b348015610a3357600080fd5b5060065461048f906001600160a01b031681565b348015610a5357600080fd5b5061046d610a623660046121b4565b611470565b348015610a7357600080fd5b5060145461048f906001600160a01b031681565b348015610a9357600080fd5b5061046d610aa2366004612268565b6114bc565b348015610ab357600080fd5b5061046d61155f565b606060038054610acb9061268b565b80601f0160208091040260200160405190810160405280929190818152602001828054610af79061268b565b8015610b445780601f10610b1957610100808354040283529160200191610b44565b820191906000526020600020905b815481529060010190602001808311610b2757829003601f168201915b5050505050905090565b600033610b5c8185856115b6565b5060019392505050565b6017546001600160a01b03163314610b995760405162461bcd60e51b8152600401610b9090612533565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600033610bc98582856116da565b610bd485858561176c565b5060019150505b9392505050565b6016546001600160a01b03163314610c0c5760405162461bcd60e51b8152600401610b9090612568565b600a5415610c4f5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610b90565b42600a55565b6017546001600160a01b03163314610c7f5760405162461bcd60e51b8152600401610b9090612533565b6001600160a01b03166000908152601a60205260409020805460ff19169055565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610d089291610d029190611b3e565b90611b3e565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610b5c9082908690610d4790879061261b565b6115b6565b6017546001600160a01b03163314610d765760405162461bcd60e51b8152600401610b9090612533565b60198054921515600160a81b0260ff60a81b1990931692909217909155601d55565b6006546001600160a01b03163314610dc25760405162461bcd60e51b8152600401610b90906124f0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b03163314610e0e5760405162461bcd60e51b8152600401610b9090612568565b601480546001600160a01b039081166000908152600760209081526040808320805460ff19908116600190811790925595548516845260089092528083208054861683179055601754909316825291902080549092161790556019805460ff60b01b1916600160b01b179055565b6017546001600160a01b03163314610ea65760405162461bcd60e51b8152600401610b9090612533565b600a54610ec55760405162461bcd60e51b8152600401610b90906124cd565b600a54610ed5906201518061261b565b421015610ef45760405162461bcd60e51b8152600401610b90906124ab565b601c55565b606060048054610acb9061268b565b6017546001600160a01b03163314610f325760405162461bcd60e51b8152600401610b9090612533565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610fe25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b90565b610fef82868684036115b6565b506001949350505050565b600033610fef81858561176c565b6006546001600160a01b031633146110325760405162461bcd60e51b8152600401610b90906124f0565b60005b815181101561109a576001601a6000848481518110611056576110566126f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611092816126c6565b915050611035565b5050565b6017546001600160a01b031633146110c85760405162461bcd60e51b8152600401610b9090612533565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031633146111145760405162461bcd60e51b8152600401610b9090612533565b600c869055600d849055600e829055600f85905560108390556011819055600b5461114d908790611147908186896115aa565b906115aa565b601281905550611176600f54611147600b546111476010546011546115aa90919063ffffffff16565b601355601254600c10156111bb5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b90565b601160135411156111fd5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b90565b505050505050565b6017546001600160a01b0316331461122f5760405162461bcd60e51b8152600401610b9090612533565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b0316331461127b5760405162461bcd60e51b8152600401610b9090612533565b600b546002146112c05760405162461bcd60e51b815260206004820152601060248201526f08585b1c9958591e481c99591d58d95960821b6044820152606401610b90565b600a546112df5760405162461bcd60e51b8152600401610b90906124cd565b600a546112ef906203f48061261b565b42101561130e5760405162461bcd60e51b8152600401610b90906124ab565b6001600b819055600c54600d54600e5461132f9361114792909183916115aa565b601281905550611358600f54611147600b546111476010546011546115aa90919063ffffffff16565b601355565b6017546001600160a01b031633146113875760405162461bcd60e51b8152600401610b9090612533565b600a546113a65760405162461bcd60e51b8152600401610b90906124cd565b600a546113b6906201518061261b565b4210156113d55760405162461bcd60e51b8152600401610b90906124ab565b601b55565b6017546001600160a01b031633146114045760405162461bcd60e51b8152600401610b9090612533565b600a546114235760405162461bcd60e51b8152600401610b90906124cd565b600a54611433906201518061261b565b4210156114525760405162461bcd60e51b8152600401610b90906124ab565b60068054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610b90906124f0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031633146114e65760405162461bcd60e51b8152600401610b9090612533565b600a546115055760405162461bcd60e51b8152600401610b90906124cd565b600a54611515906201518061261b565b4210156115345760405162461bcd60e51b8152600401610b90906124ab565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146115895760405162461bcd60e51b8152600401610b9090612568565b6019805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000610bdb828461261b565b6001600160a01b0383166116185760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b90565b6001600160a01b0382166116795760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b90565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461176657818110156117595760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b90565b61176684848484036115b6565b50505050565b601954600090600160b01b900460ff166117b95760405162461bcd60e51b815260206004820152600e60248201526d151c98591a5b99c810db1bdcd95960921b6044820152606401610b90565b6001600160a01b0384166000908152601a602052604090205460ff161580156117fb57506001600160a01b0383166000908152601a602052604090205460ff16155b61180457600080fd5b601954600160a01b900460ff161561182857611821848484611b4a565b9050610bdb565b601b548211158061185157506001600160a01b03841660009081526008602052604090205460ff165b61188d5760405162461bcd60e51b815260206004820152600d60248201526c13585e08151608105b5bdd5b9d609a1b6044820152606401610b90565b6001600160a01b03831660009081526008602052604090205460ff161580156118bf5750600654600160a01b900460ff165b1561192c57601c546001600160a01b0384166000908152602081905260409020546118ea90846115aa565b111561192c5760405162461bcd60e51b815260206004820152601160248201527013585e0815d85b1b195d08105b5bdd5b9d607a1b6044820152606401610b90565b6015546001600160a01b031633148015906119515750601954600160a01b900460ff16155b80156119665750601954600160a81b900460ff165b80156119835750601d543060009081526020819052604090205410155b1561199057611990611c27565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081529081905291909120546119e1918490612095565b6001600160a01b03851660009081526020818152604080832093909355600790529081205460ff16158015611a2f57506001600160a01b03841660009081526007602052604090205460ff16155b611a395782611a44565b611a448585856120c1565b6001600160a01b038516600090815260208190526040902054909150611a6a90826115aa565b6001600160a01b038086166000908152602081905260409020919091556015548682169116148015611aa85750600a54611aa590603c61261b565b42105b15611ae65760405162461bcd60e51b815260206004820152600e60248201526d151c98591a5b99c810db1bdcd95960921b6044820152606401610b90565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b2b91815260200190565b60405180910390a3506001949350505050565b6000610bdb8284612674565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081529081905291822054611b9a918490612095565b6001600160a01b038086166000908152602081905260408082209390935590851681522054611bc990836115aa565b6001600160a01b038481166000818152602081815260409182902094909455518581529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b6019805460ff60a01b1916600160a01b17905530600090815260208190526040812054601254909190819081908190600210611c8a57611c836002611c7d601354611c7d6010548a61217c90919063ffffffff16565b90612188565b9350611cad565b611caa6002611c7d601254611c7d600d548a61217c90919063ffffffff16565b93505b6000611cb98686611b3e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cf357611cf36126f7565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611d4757600080fd5b505afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f91906121d1565b81600181518110611d9257611d926126f7565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790611dd89085906000908690309042906004016125aa565b600060405180830381600087803b158015611df257600080fd5b505af1158015611e06573d6000803e3d6000fd5b505050506000479050600260125411611e7a57611e34601354611c7d6011548461217c90919063ffffffff16565b9550611e51601354611c7d600b548461217c90919063ffffffff16565b9450611e736002611c7d601354611c7d6010548661217c90919063ffffffff16565b9350611ed7565b611e95601254611c7d600e548461217c90919063ffffffff16565b9550611eb2601254611c7d600b548461217c90919063ffffffff16565b9450611ed46002611c7d601254611c7d600d548661217c90919063ffffffff16565b93505b6000611ee985610d028881868c611b3e565b90508115611fd157600560009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d876040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f4157600080fd5b505af1158015611f55573d6000803e3d6000fd5b50506018546040516001600160a01b0390911693508a156108fc0292508a91506000818181858888f19350505050158015611f94573d6000803e3d6000fd5b506019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611fcf573d6000803e3d6000fd5b505b871561207d5760145460405163f305d71960e01b8152306004820152602481018a9052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990879060c4016060604051808303818588803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061207991906123e5565b5050505b50506019805460ff60a01b1916905550505050505050565b600081848411156120b95760405162461bcd60e51b8152600401610b909190612456565b505050900390565b60155460009081906001600160a01b038581169116146120e3576012546120e7565b6013545b905060006120fa6064611c7d868561217c565b3060009081526020819052604090205490915061211790826115aa565b3060008181526020818152604091829020939093555183815290916001600160a01b038916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36121728482611b3e565b9695505050505050565b6000610bdb8284612655565b6000610bdb8284612633565b803561219f81612723565b919050565b8035801515811461219f57600080fd5b6000602082840312156121c657600080fd5b8135610bdb81612723565b6000602082840312156121e357600080fd5b8151610bdb81612723565b6000806040838503121561220157600080fd5b823561220c81612723565b9150602083013561221c81612723565b809150509250929050565b60008060006060848603121561223c57600080fd5b833561224781612723565b9250602084013561225781612723565b929592945050506040919091013590565b6000806040838503121561227b57600080fd5b823561228681612723565b9150612294602084016121a4565b90509250929050565b600080604083850312156122b057600080fd5b82356122bb81612723565b946020939093013593505050565b600060208083850312156122dc57600080fd5b823567ffffffffffffffff808211156122f457600080fd5b818501915085601f83011261230857600080fd5b81358181111561231a5761231a61270d565b8060051b604051601f19603f8301168101818110858211171561233f5761233f61270d565b604052828152858101935084860182860187018a101561235e57600080fd5b600095505b838610156123885761237481612194565b855260019590950194938601938601612363565b5098975050505050505050565b6000602082840312156123a757600080fd5b610bdb826121a4565b600080604083850312156123c357600080fd5b6122bb836121a4565b6000602082840312156123de57600080fd5b5035919050565b6000806000606084860312156123fa57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c0878903121561242c57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561248357858101830151858201604001528201612467565b81811115612495576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b602080825260099082015268085b185d5b98da195960ba1b604082015260600190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604082015261727960f01b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125fa5784516001600160a01b0316835293830193918301916001016125d5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561262e5761262e6126e1565b500190565b60008261265057634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561266f5761266f6126e1565b500290565b600082821015612686576126866126e1565b500390565b600181811c9082168061269f57607f821691505b602082108114156126c057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156126da576126da6126e1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461273857600080fd5b5056fea264697066735822122066bde435a58658fde273e258146139b21fe9591d7f8c1a1c260299e6685b510b64736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000054a78dae49e20000000000000000000000000000f6850e065f4eae42781bd64f693bc78b7a1d1228000000000000000000000000810fa3add2b37d49f5077018790a0b423cf63c4f000000000000000000000000061722c6d571c27ccc4db593b34c10793fd6a2c40000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000001e0d1a8a98bab743d6e2c1f5573e74e97ba701dc000000000000000000000000f9859ab850a8cc66ff33001798baca257b64bcf5000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000b474f46554e444d45494e55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000447464d4900000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106103855760003560e01c80638b42507f116101d1578063c45a015511610102578063dd62ed3e116100a0578063f7c722051161006f578063f7c7220514610a47578063f887ea4014610a67578063fabe628314610a87578063fbd7575314610aa757600080fd5b8063dd62ed3e146109ab578063e5d85108146109f1578063e66b1d1e14610a07578063ede1588f14610a2757600080fd5b8063d0a5eb4e116100dc578063d0a5eb4e14610935578063d1db380914610955578063d4fb9a011461096a578063d920334e1461098b57600080fd5b8063c45a0155146108df578063ca987b0e146108ff578063cb29813c1461091557600080fd5b8063a457c2d71161016f578063b515566a11610149578063b515566a14610859578063bb542ef014610879578063bf56b37114610899578063bfd79284146108af57600080fd5b8063a457c2d7146107f9578063a8aa1b3114610819578063a9059cbb1461083957600080fd5b806395d89b41116101ab57806395d89b411461078e578063985b9db0146107a3578063a3a2e89e146107b9578063a3e67610146107d957600080fd5b80638b42507f146107285780638ea5220f146107585780639502c4261461077857600080fd5b80633dab5269116102b65780636827e764116102545780637c0ff205116102235780637c0ff205146106c65780637d1db4a5146106dc5780637db1342c146106f2578063807c2d9c1461071257600080fd5b80636827e76414610644578063704ce43e1461065a57806370a0823114610670578063774b5847146106a657600080fd5b806343d49dda1161029057806343d49dda146105cd57806344de2e4c146105ed5780634a74bb021461060e578063546a88111461062f57600080fd5b80633dab52691461054d5780633f4218e01461056d5780634355855a1461059d57600080fd5b806323b62b7511610323578063273123b7116102fd578063273123b7146104dc5780632b112e49146104fc578063313ce56714610511578063395093511461052d57600080fd5b806323b62b751461046f57806323b872dd146104a757806327193bc4146104c757600080fd5b80630963da6c1161035f5780630963da6c1461040c57806318160ddd146104225780631df4ccfc146104375780631f53ac021461044d57600080fd5b80630445b6671461039157806306fdde03146103ba578063095ea7b3146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a7601d5481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103cf610abc565b6040516103b19190612456565b3480156103e857600080fd5b506103fc6103f736600461229d565b610b4e565b60405190151581526020016103b1565b34801561041857600080fd5b506103a7600c5481565b34801561042e57600080fd5b506002546103a7565b34801561044357600080fd5b506103a760125481565b34801561045957600080fd5b5061046d6104683660046121b4565b610b66565b005b34801561047b57600080fd5b5060195461048f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b3480156104b357600080fd5b506103fc6104c2366004612227565b610bbb565b3480156104d357600080fd5b5061046d610be2565b3480156104e857600080fd5b5061046d6104f73660046121b4565b610c55565b34801561050857600080fd5b506103a7610ca0565b34801561051d57600080fd5b50604051600981526020016103b1565b34801561053957600080fd5b506103fc61054836600461229d565b610d0d565b34801561055957600080fd5b5061046d6105683660046123b0565b610d4c565b34801561057957600080fd5b506103fc6105883660046121b4565b60076020526000908152604090205460ff1681565b3480156105a957600080fd5b506103fc6105b83660046121b4565b60096020526000908152604090205460ff1681565b3480156105d957600080fd5b5061046d6105e83660046121b4565b610d98565b3480156105f957600080fd5b506006546103fc90600160a01b900460ff1681565b34801561061a57600080fd5b506019546103fc90600160a81b900460ff1681565b34801561063b57600080fd5b5061046d610de4565b34801561065057600080fd5b506103a7600e5481565b34801561066657600080fd5b506103a7600d5481565b34801561067c57600080fd5b506103a761068b3660046121b4565b6001600160a01b031660009081526020819052604090205490565b3480156106b257600080fd5b5060055461048f906001600160a01b031681565b3480156106d257600080fd5b506103a760105481565b3480156106e857600080fd5b506103a7601b5481565b3480156106fe57600080fd5b5061046d61070d3660046123cc565b610e7c565b34801561071e57600080fd5b506103a7601c5481565b34801561073457600080fd5b506103fc6107433660046121b4565b60086020526000908152604090205460ff1681565b34801561076457600080fd5b5060185461048f906001600160a01b031681565b34801561078457600080fd5b506103a760115481565b34801561079a57600080fd5b506103cf610ef9565b3480156107af57600080fd5b506103a7600f5481565b3480156107c557600080fd5b5061046d6107d4366004612268565b610f08565b3480156107e557600080fd5b5060175461048f906001600160a01b031681565b34801561080557600080fd5b506103fc61081436600461229d565b610f5d565b34801561082557600080fd5b5060155461048f906001600160a01b031681565b34801561084557600080fd5b506103fc61085436600461229d565b610ffa565b34801561086557600080fd5b5061046d6108743660046122c9565b611008565b34801561088557600080fd5b5061046d6108943660046121b4565b61109e565b3480156108a557600080fd5b506103a7600a5481565b3480156108bb57600080fd5b506103fc6108ca3660046121b4565b601a6020526000908152604090205460ff1681565b3480156108eb57600080fd5b5060165461048f906001600160a01b031681565b34801561090b57600080fd5b506103a760135481565b34801561092157600080fd5b5061046d610930366004612413565b6110ea565b34801561094157600080fd5b5061046d6109503660046121b4565b611205565b34801561096157600080fd5b5061046d611251565b34801561097657600080fd5b506019546103fc90600160b01b900460ff1681565b34801561099757600080fd5b5061046d6109a63660046123cc565b61135d565b3480156109b757600080fd5b506103a76109c63660046121ee565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109fd57600080fd5b506103a7600b5481565b348015610a1357600080fd5b5061046d610a22366004612395565b6113da565b348015610a3357600080fd5b5060065461048f906001600160a01b031681565b348015610a5357600080fd5b5061046d610a623660046121b4565b611470565b348015610a7357600080fd5b5060145461048f906001600160a01b031681565b348015610a9357600080fd5b5061046d610aa2366004612268565b6114bc565b348015610ab357600080fd5b5061046d61155f565b606060038054610acb9061268b565b80601f0160208091040260200160405190810160405280929190818152602001828054610af79061268b565b8015610b445780601f10610b1957610100808354040283529160200191610b44565b820191906000526020600020905b815481529060010190602001808311610b2757829003601f168201915b5050505050905090565b600033610b5c8185856115b6565b5060019392505050565b6017546001600160a01b03163314610b995760405162461bcd60e51b8152600401610b9090612533565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600033610bc98582856116da565b610bd485858561176c565b5060019150505b9392505050565b6016546001600160a01b03163314610c0c5760405162461bcd60e51b8152600401610b9090612568565b600a5415610c4f5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610b90565b42600a55565b6017546001600160a01b03163314610c7f5760405162461bcd60e51b8152600401610b9090612533565b6001600160a01b03166000908152601a60205260409020805460ff19169055565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610d089291610d029190611b3e565b90611b3e565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610b5c9082908690610d4790879061261b565b6115b6565b6017546001600160a01b03163314610d765760405162461bcd60e51b8152600401610b9090612533565b60198054921515600160a81b0260ff60a81b1990931692909217909155601d55565b6006546001600160a01b03163314610dc25760405162461bcd60e51b8152600401610b90906124f0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b03163314610e0e5760405162461bcd60e51b8152600401610b9090612568565b601480546001600160a01b039081166000908152600760209081526040808320805460ff19908116600190811790925595548516845260089092528083208054861683179055601754909316825291902080549092161790556019805460ff60b01b1916600160b01b179055565b6017546001600160a01b03163314610ea65760405162461bcd60e51b8152600401610b9090612533565b600a54610ec55760405162461bcd60e51b8152600401610b90906124cd565b600a54610ed5906201518061261b565b421015610ef45760405162461bcd60e51b8152600401610b90906124ab565b601c55565b606060048054610acb9061268b565b6017546001600160a01b03163314610f325760405162461bcd60e51b8152600401610b9090612533565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610fe25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b90565b610fef82868684036115b6565b506001949350505050565b600033610fef81858561176c565b6006546001600160a01b031633146110325760405162461bcd60e51b8152600401610b90906124f0565b60005b815181101561109a576001601a6000848481518110611056576110566126f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611092816126c6565b915050611035565b5050565b6017546001600160a01b031633146110c85760405162461bcd60e51b8152600401610b9090612533565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031633146111145760405162461bcd60e51b8152600401610b9090612533565b600c869055600d849055600e829055600f85905560108390556011819055600b5461114d908790611147908186896115aa565b906115aa565b601281905550611176600f54611147600b546111476010546011546115aa90919063ffffffff16565b601355601254600c10156111bb5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b90565b601160135411156111fd5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b90565b505050505050565b6017546001600160a01b0316331461122f5760405162461bcd60e51b8152600401610b9090612533565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b0316331461127b5760405162461bcd60e51b8152600401610b9090612533565b600b546002146112c05760405162461bcd60e51b815260206004820152601060248201526f08585b1c9958591e481c99591d58d95960821b6044820152606401610b90565b600a546112df5760405162461bcd60e51b8152600401610b90906124cd565b600a546112ef906203f48061261b565b42101561130e5760405162461bcd60e51b8152600401610b90906124ab565b6001600b819055600c54600d54600e5461132f9361114792909183916115aa565b601281905550611358600f54611147600b546111476010546011546115aa90919063ffffffff16565b601355565b6017546001600160a01b031633146113875760405162461bcd60e51b8152600401610b9090612533565b600a546113a65760405162461bcd60e51b8152600401610b90906124cd565b600a546113b6906201518061261b565b4210156113d55760405162461bcd60e51b8152600401610b90906124ab565b601b55565b6017546001600160a01b031633146114045760405162461bcd60e51b8152600401610b9090612533565b600a546114235760405162461bcd60e51b8152600401610b90906124cd565b600a54611433906201518061261b565b4210156114525760405162461bcd60e51b8152600401610b90906124ab565b60068054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610b90906124f0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031633146114e65760405162461bcd60e51b8152600401610b9090612533565b600a546115055760405162461bcd60e51b8152600401610b90906124cd565b600a54611515906201518061261b565b4210156115345760405162461bcd60e51b8152600401610b90906124ab565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146115895760405162461bcd60e51b8152600401610b9090612568565b6019805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000610bdb828461261b565b6001600160a01b0383166116185760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b90565b6001600160a01b0382166116795760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b90565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461176657818110156117595760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b90565b61176684848484036115b6565b50505050565b601954600090600160b01b900460ff166117b95760405162461bcd60e51b815260206004820152600e60248201526d151c98591a5b99c810db1bdcd95960921b6044820152606401610b90565b6001600160a01b0384166000908152601a602052604090205460ff161580156117fb57506001600160a01b0383166000908152601a602052604090205460ff16155b61180457600080fd5b601954600160a01b900460ff161561182857611821848484611b4a565b9050610bdb565b601b548211158061185157506001600160a01b03841660009081526008602052604090205460ff165b61188d5760405162461bcd60e51b815260206004820152600d60248201526c13585e08151608105b5bdd5b9d609a1b6044820152606401610b90565b6001600160a01b03831660009081526008602052604090205460ff161580156118bf5750600654600160a01b900460ff165b1561192c57601c546001600160a01b0384166000908152602081905260409020546118ea90846115aa565b111561192c5760405162461bcd60e51b815260206004820152601160248201527013585e0815d85b1b195d08105b5bdd5b9d607a1b6044820152606401610b90565b6015546001600160a01b031633148015906119515750601954600160a01b900460ff16155b80156119665750601954600160a81b900460ff165b80156119835750601d543060009081526020819052604090205410155b1561199057611990611c27565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081529081905291909120546119e1918490612095565b6001600160a01b03851660009081526020818152604080832093909355600790529081205460ff16158015611a2f57506001600160a01b03841660009081526007602052604090205460ff16155b611a395782611a44565b611a448585856120c1565b6001600160a01b038516600090815260208190526040902054909150611a6a90826115aa565b6001600160a01b038086166000908152602081905260409020919091556015548682169116148015611aa85750600a54611aa590603c61261b565b42105b15611ae65760405162461bcd60e51b815260206004820152600e60248201526d151c98591a5b99c810db1bdcd95960921b6044820152606401610b90565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b2b91815260200190565b60405180910390a3506001949350505050565b6000610bdb8284612674565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081529081905291822054611b9a918490612095565b6001600160a01b038086166000908152602081905260408082209390935590851681522054611bc990836115aa565b6001600160a01b038481166000818152602081815260409182902094909455518581529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b6019805460ff60a01b1916600160a01b17905530600090815260208190526040812054601254909190819081908190600210611c8a57611c836002611c7d601354611c7d6010548a61217c90919063ffffffff16565b90612188565b9350611cad565b611caa6002611c7d601254611c7d600d548a61217c90919063ffffffff16565b93505b6000611cb98686611b3e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cf357611cf36126f7565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611d4757600080fd5b505afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f91906121d1565b81600181518110611d9257611d926126f7565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790611dd89085906000908690309042906004016125aa565b600060405180830381600087803b158015611df257600080fd5b505af1158015611e06573d6000803e3d6000fd5b505050506000479050600260125411611e7a57611e34601354611c7d6011548461217c90919063ffffffff16565b9550611e51601354611c7d600b548461217c90919063ffffffff16565b9450611e736002611c7d601354611c7d6010548661217c90919063ffffffff16565b9350611ed7565b611e95601254611c7d600e548461217c90919063ffffffff16565b9550611eb2601254611c7d600b548461217c90919063ffffffff16565b9450611ed46002611c7d601254611c7d600d548661217c90919063ffffffff16565b93505b6000611ee985610d028881868c611b3e565b90508115611fd157600560009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d876040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f4157600080fd5b505af1158015611f55573d6000803e3d6000fd5b50506018546040516001600160a01b0390911693508a156108fc0292508a91506000818181858888f19350505050158015611f94573d6000803e3d6000fd5b506019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611fcf573d6000803e3d6000fd5b505b871561207d5760145460405163f305d71960e01b8152306004820152602481018a9052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990879060c4016060604051808303818588803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061207991906123e5565b5050505b50506019805460ff60a01b1916905550505050505050565b600081848411156120b95760405162461bcd60e51b8152600401610b909190612456565b505050900390565b60155460009081906001600160a01b038581169116146120e3576012546120e7565b6013545b905060006120fa6064611c7d868561217c565b3060009081526020819052604090205490915061211790826115aa565b3060008181526020818152604091829020939093555183815290916001600160a01b038916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36121728482611b3e565b9695505050505050565b6000610bdb8284612655565b6000610bdb8284612633565b803561219f81612723565b919050565b8035801515811461219f57600080fd5b6000602082840312156121c657600080fd5b8135610bdb81612723565b6000602082840312156121e357600080fd5b8151610bdb81612723565b6000806040838503121561220157600080fd5b823561220c81612723565b9150602083013561221c81612723565b809150509250929050565b60008060006060848603121561223c57600080fd5b833561224781612723565b9250602084013561225781612723565b929592945050506040919091013590565b6000806040838503121561227b57600080fd5b823561228681612723565b9150612294602084016121a4565b90509250929050565b600080604083850312156122b057600080fd5b82356122bb81612723565b946020939093013593505050565b600060208083850312156122dc57600080fd5b823567ffffffffffffffff808211156122f457600080fd5b818501915085601f83011261230857600080fd5b81358181111561231a5761231a61270d565b8060051b604051601f19603f8301168101818110858211171561233f5761233f61270d565b604052828152858101935084860182860187018a101561235e57600080fd5b600095505b838610156123885761237481612194565b855260019590950194938601938601612363565b5098975050505050505050565b6000602082840312156123a757600080fd5b610bdb826121a4565b600080604083850312156123c357600080fd5b6122bb836121a4565b6000602082840312156123de57600080fd5b5035919050565b6000806000606084860312156123fa57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c0878903121561242c57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561248357858101830151858201604001528201612467565b81811115612495576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b602080825260099082015268085b185d5b98da195960ba1b604082015260600190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604082015261727960f01b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125fa5784516001600160a01b0316835293830193918301916001016125d5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561262e5761262e6126e1565b500190565b60008261265057634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561266f5761266f6126e1565b500290565b600082821015612686576126866126e1565b500390565b600181811c9082168061269f57607f821691505b602082108114156126c057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156126da576126da6126e1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461273857600080fd5b5056fea264697066735822122066bde435a58658fde273e258146139b21fe9591d7f8c1a1c260299e6685b510b64736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000054a78dae49e20000000000000000000000000000f6850e065f4eae42781bd64f693bc78b7a1d1228000000000000000000000000810fa3add2b37d49f5077018790a0b423cf63c4f000000000000000000000000061722c6d571c27ccc4db593b34c10793fd6a2c40000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000001e0d1a8a98bab743d6e2c1f5573e74e97ba701dc000000000000000000000000f9859ab850a8cc66ff33001798baca257b64bcf5000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000b474f46554e444d45494e55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000447464d4900000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): GOFUNDMEINU
Arg [1] : tokenSymbol (string): GFMI
Arg [2] : initialSupply (uint256): 6100000000000000000
Arg [3] : owner (address): 0xF6850e065f4eaE42781bd64f693bc78B7a1D1228
Arg [4] : dev (address): 0x810fA3adD2b37D49F5077018790a0B423cF63c4F
Arg [5] : main (address): 0x061722C6d571c27cCC4dB593b34C10793Fd6A2C4
Arg [6] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [7] : initialHldAdmin (address): 0x1E0d1a8a98BaB743d6e2c1f5573e74E97bA701Dc
Arg [8] : initialHldBurner (address): 0xf9859aB850A8cC66Ff33001798BaCa257b64bCf5
Arg [9] : fees (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
19 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [2] : 00000000000000000000000000000000000000000000000054a78dae49e20000
Arg [3] : 000000000000000000000000f6850e065f4eae42781bd64f693bc78b7a1d1228
Arg [4] : 000000000000000000000000810fa3add2b37d49f5077018790a0b423cf63c4f
Arg [5] : 000000000000000000000000061722c6d571c27ccc4db593b34c10793fd6a2c4
Arg [6] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [7] : 0000000000000000000000001e0d1a8a98bab743d6e2c1f5573e74e97ba701dc
Arg [8] : 000000000000000000000000f9859ab850a8cc66ff33001798baca257b64bcf5
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [15] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [16] : 474f46554e444d45494e55000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [18] : 47464d4900000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

16180:19776:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17697:28;;;;;;;;;;;;;;;;;;;12872:25:1;;;12860:2;12845:18;17697:28:0;;;;;;;;24769:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;27129:203::-;;;;;;;;;;-1:-1:-1;27129:203:0;;;;;:::i;:::-;;:::i;:::-;;;6388:14:1;;6381:22;6363:41;;6351:2;6336:18;27129:203:0;6223:187:1;16997:22:0;;;;;;;;;;;;;;;;25894:110;;;;;;;;;;-1:-1:-1;25984:12:0;;25894:110;;17191:23;;;;;;;;;;;;;;;;23850:123;;;;;;;;;;-1:-1:-1;23850:123:0;;;;;:::i;:::-;;:::i;:::-;;17427:33;;;;;;;;;;-1:-1:-1;17427:33:0;;;;-1:-1:-1;;;;;17427:33:0;;;;;;-1:-1:-1;;;;;5343:32:1;;;5325:51;;5313:2;5298:18;17427:33:0;5179:203:1;27922:297:0;;;;;;;;;;-1:-1:-1;27922:297:0;;;;;:::i;:::-;;:::i;21108:148::-;;;;;;;;;;;;;:::i;24444:90::-;;;;;;;;;;-1:-1:-1;24444:90:0;;;;;:::i;:::-;;:::i;24549:144::-;;;;;;;;;;;;;:::i;25735:94::-;;;;;;;;;;-1:-1:-1;25735:94:0;;25820:1;14035:36:1;;14023:2;14008:18;25735:94:0;13893:184:1;28628:242:0;;;;;;;;;;-1:-1:-1;28628:242:0;;;;;:::i;:::-;;:::i;24237:199::-;;;;;;;;;;-1:-1:-1;24237:199:0;;;;;:::i;:::-;;:::i;16767:44::-;;;;;;;;;;-1:-1:-1;16767:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16873:49;;;;;;;;;;-1:-1:-1;16873:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20498:115;;;;;;;;;;-1:-1:-1;20498:115:0;;;;;:::i;:::-;;:::i;16725:33::-;;;;;;;;;;-1:-1:-1;16725:33:0;;;;-1:-1:-1;;;16725:33:0;;;;;;17497:40;;;;;;;;;;-1:-1:-1;17497:40:0;;;;-1:-1:-1;;;17497:40:0;;;;;;21275:224;;;;;;;;;;;;;:::i;17053:21::-;;;;;;;;;;;;;;;;17026:20;;;;;;;;;;;;;;;;26067:127;;;;;;;;;;-1:-1:-1;26067:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;26168:18:0;26141:7;26168:18;;;;;;;;;;;;26067:127;16647:39;;;;;;;;;;-1:-1:-1;16647:39:0;;;;-1:-1:-1;;;;;16647:39:0;;;17118:26;;;;;;;;;;;;;;;;17631:27;;;;;;;;;;;;;;;;22500:233;;;;;;;;;;-1:-1:-1;22500:233:0;;;;;:::i;:::-;;:::i;17665:25::-;;;;;;;;;;;;;;;;16818:48;;;;;;;;;;-1:-1:-1;16818:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17388:32;;;;;;;;;;-1:-1:-1;17388:32:0;;;;-1:-1:-1;;;;;17388:32:0;;;17151:27;;;;;;;;;;;;;;;;24990:106;;;;;;;;;;;;;:::i;17083:28::-;;;;;;;;;;;;;;;;23005:122;;;;;;;;;;-1:-1:-1;23005:122:0;;;;;:::i;:::-;;:::i;17356:25::-;;;;;;;;;;-1:-1:-1;17356:25:0;;;;-1:-1:-1;;;;;17356:25:0;;;29373:440;;;;;;;;;;-1:-1:-1;29373:440:0;;;;;:::i;:::-;;:::i;17301:19::-;;;;;;;;;;-1:-1:-1;17301:19:0;;;;-1:-1:-1;;;;;17301:19:0;;;26400:195;;;;;;;;;;-1:-1:-1;26400:195:0;;;;;:::i;:::-;;:::i;20791:169::-;;;;;;;;;;-1:-1:-1;20791:169:0;;;;;:::i;:::-;;:::i;24108:121::-;;;;;;;;;;-1:-1:-1;24108:121:0;;;;;:::i;:::-;;:::i;16931:25::-;;;;;;;;;;;;;;;;17585:37;;;;;;;;;;-1:-1:-1;17585:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17327:22;;;;;;;;;;-1:-1:-1;17327:22:0;;;;-1:-1:-1;;;;;17327:22:0;;;17221:32;;;;;;;;;;;;;;;;21539:718;;;;;;;;;;-1:-1:-1;21539:718:0;;;;;:::i;:::-;;:::i;23982:118::-;;;;;;;;;;-1:-1:-1;23982:118:0;;;;;:::i;:::-;;:::i;23411:425::-;;;;;;;;;;;;;:::i;17544:32::-;;;;;;;;;;-1:-1:-1;17544:32:0;;;;-1:-1:-1;;;17544:32:0;;;;;;22270:222;;;;;;;;;;-1:-1:-1;22270:222:0;;;;;:::i;:::-;;:::i;26658:151::-;;;;;;;;;;-1:-1:-1;26658:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;26774:18:0;;;26747:7;26774:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;26658:151;16963:25;;;;;;;;;;;;;;;;22741:252;;;;;;;;;;-1:-1:-1;22741:252:0;;;;;:::i;:::-;;:::i;16693:23::-;;;;;;;;;;-1:-1:-1;16693:23:0;;;;-1:-1:-1;;;;;16693:23:0;;;20621:154;;;;;;;;;;-1:-1:-1;20621:154:0;;;;;:::i;:::-;;:::i;17262:32::-;;;;;;;;;;-1:-1:-1;17262:32:0;;;;-1:-1:-1;;;;;17262:32:0;;;23135:266;;;;;;;;;;-1:-1:-1;23135:266:0;;;;;:::i;:::-;;:::i;21001:99::-;;;;;;;;;;;;;:::i;24769:102::-;24825:13;24858:5;24851:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24769:102;:::o;27129:203::-;27214:4;4536:10;27270:32;4536:10;27286:7;27295:6;27270:8;:32::i;:::-;-1:-1:-1;27320:4:0;;27129:203;-1:-1:-1;;;27129:203:0:o;23850:123::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;;;;;;;;;23932:9:::1;:33:::0;;-1:-1:-1;;;;;;23932:33:0::1;-1:-1:-1::0;;;;;23932:33:0;;;::::1;::::0;;;::::1;::::0;;23850:123::o;27922:297::-;28055:4;4536:10;28113:38;28129:4;4536:10;28144:6;28113:15;:38::i;:::-;28162:27;28172:4;28178:2;28182:6;28162:9;:27::i;:::-;;28207:4;28200:11;;;27922:297;;;;;;:::o;21108:148::-;20382:7;;-1:-1:-1;;;;;20382:7:0;4536:10;20382:23;20374:70;;;;-1:-1:-1;;;20374:70:0;;;;;;;:::i;:::-;21173:10:::1;::::0;:15;21165:44:::1;;;::::0;-1:-1:-1;;;21165:44:0;;10683:2:1;21165:44:0::1;::::0;::::1;10665:21:1::0;10722:2;10702:18;;;10695:30;-1:-1:-1;;;10741:18:1;;;10734:46;10797:18;;21165:44:0::1;10481:340:1::0;21165:44:0::1;21233:15;21220:10;:28:::0;21108:148::o;24444:90::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24506:12:0::1;24521:5;24506:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;24506:20:0::1;::::0;;24444:90::o;24549:144::-;24604:7;26168:18;;;;;;16525:42;26168:18;;;;24631:12;;:54;;26168:18;24631:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;24624:61;;24549:144;:::o;28628:242::-;4536:10;28718:4;28799:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;28799:27:0;;;;;;;;;;28718:4;;4536:10;28774:66;;4536:10;;28799:27;;:40;;28829:10;;28799:40;:::i;:::-;28774:8;:66::i;24237:199::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;24346:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;24346:39:0::1;-1:-1:-1::0;;;;24346:39:0;;::::1;::::0;;;::::1;::::0;;;24396:13:::1;:32:::0;24237:199::o;20498:115::-;20117:8;;-1:-1:-1;;;;;20117:8:0;4536:10;20117:24;20109:72;;;;-1:-1:-1;;;20109:72:0;;;;;;;:::i;:::-;20586:8:::1;:19:::0;;-1:-1:-1;;;;;;20586:19:0::1;-1:-1:-1::0;;;;;20586:19:0;;;::::1;::::0;;;::::1;::::0;;20498:115::o;21275:224::-;20382:7;;-1:-1:-1;;;;;20382:7:0;4536:10;20382:23;20374:70;;;;-1:-1:-1;;;20374:70:0;;;;;;;:::i;:::-;21350:6:::1;::::0;;-1:-1:-1;;;;;21350:6:0;;::::1;21330:28;::::0;;;:11:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;21330:35:0;;::::1;21361:4;21330:35:::0;;::::1;::::0;;;21400:6;;;::::1;21376:32:::0;;:15:::1;:32:::0;;;;;;:39;;;::::1;::::0;::::1;::::0;;21442:10:::1;::::0;;;::::1;21426:27:::0;;;;;:34;;;;::::1;;::::0;;21471:13:::1;:20:::0;;-1:-1:-1;;;;21471:20:0::1;-1:-1:-1::0;;;21471:20:0::1;::::0;;21275:224::o;22500:233::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;22583:10:::1;::::0;22575:37:::1;;;;-1:-1:-1::0;;;22575:37:0::1;;;;;;;:::i;:::-;22650:10;::::0;:21:::1;::::0;22663:8:::1;22650:21;:::i;:::-;22631:15;:40;;22623:61;;;;-1:-1:-1::0;;;22623:61:0::1;;;;;;;:::i;:::-;22703:10;:22:::0;22500:233::o;24990:106::-;25048:13;25081:7;25074:14;;;;;:::i;23005:122::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23091:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;23091:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23005:122::o;29373:440::-;4536:10;29468:4;29551:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;29551:27:0;;;;;;;;;;29468:4;;4536:10;29597:35;;;;29589:85;;;;-1:-1:-1;;;29589:85:0;;12522:2:1;29589:85:0;;;12504:21:1;12561:2;12541:18;;;12534:30;12600:34;12580:18;;;12573:62;-1:-1:-1;;;12651:18:1;;;12644:35;12696:19;;29589:85:0;12320:401:1;29589:85:0;29710:60;29719:5;29726:7;29754:15;29735:16;:34;29710:8;:60::i;:::-;-1:-1:-1;29801:4:0;;29373:440;-1:-1:-1;;;;29373:440:0:o;26400:195::-;26481:4;4536:10;26537:28;4536:10;26554:2;26558:6;26537:9;:28::i;20791:169::-;20117:8;;-1:-1:-1;;;;;20117:8:0;4536:10;20117:24;20109:72;;;;-1:-1:-1;;;20109:72:0;;;;;;;:::i;:::-;20870:6:::1;20865:88;20886:5;:12;20882:1;:16;20865:88;;;20937:4;20920;:14;20925:5;20931:1;20925:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;20920:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;20920:14:0;:21;;-1:-1:-1;;20920:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20900:3;::::1;::::0;::::1;:::i;:::-;;;;20865:88;;;;20791:169:::0;:::o;24108:121::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;24194:10:::1;:27:::0;;-1:-1:-1;;;;;;24194:27:0::1;-1:-1:-1::0;;;;;24194:27:0;;;::::1;::::0;;;::::1;::::0;;24108:121::o;21539:718::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;21756:7:::1;:24:::0;;;21791:5:::1;:20:::0;;;21822:6:::1;:22:::0;;;21857:13:::1;:36:::0;;;21904:11:::1;:32:::0;;;21947:12:::1;:34:::0;;;22027:6:::1;::::0;22005:42:::1;::::0;21766:14;;22005:29:::1;::::0;;21831:13;21799:12;22005:10:::1;:17::i;:::-;:21:::0;::::1;:29::i;:42::-;21994:8;:53;;;;22078:60;22124:13;;22078:41;22112:6;;22078:29;22095:11;;22078:12;;:16;;:29;;;;:::i;:60::-;22058:17;:80:::0;22159:8:::1;::::0;22171:2:::1;-1:-1:-1::0;22159:14:0::1;22151:39;;;::::0;-1:-1:-1;;;22151:39:0;;11028:2:1;22151:39:0::1;::::0;::::1;11010:21:1::0;11067:2;11047:18;;;11040:30;-1:-1:-1;;;11086:18:1;;;11079:42;11138:18;;22151:39:0::1;10826:336:1::0;22151:39:0::1;22230:2;22209:17;;:23;;22201:48;;;::::0;-1:-1:-1;;;22201:48:0;;11028:2:1;22201:48:0::1;::::0;::::1;11010:21:1::0;11067:2;11047:18;;;11040:30;-1:-1:-1;;;11086:18:1;;;11079:42;11138:18;;22201:48:0::1;10826:336:1::0;22201:48:0::1;21539:718:::0;;;;;;:::o;23982:118::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;24066:10:::1;:26:::0;;-1:-1:-1;;;;;;24066:26:0::1;-1:-1:-1::0;;;;;24066:26:0;;;::::1;::::0;;;::::1;::::0;;23982:118::o;23411:425::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;23473:6:::1;;23483:1;23473:11;23465:40;;;::::0;-1:-1:-1;;;23465:40:0;;11369:2:1;23465:40:0::1;::::0;::::1;11351:21:1::0;11408:2;11388:18;;;11381:30;-1:-1:-1;;;11427:18:1;;;11420:46;11483:18;;23465:40:0::1;11167:340:1::0;23465:40:0::1;23540:10;::::0;23532:37:::1;;;;-1:-1:-1::0;;;23532:37:0::1;;;;;;;:::i;:::-;23615:10;::::0;:21:::1;::::0;23628:8:::1;23615:21;:::i;:::-;23596:15;:40;;23588:61;;;;-1:-1:-1::0;;;23588:61:0::1;;;;;;;:::i;:::-;23671:1;23662:6;:10:::0;;;23728:7:::1;::::0;23705:5:::1;::::0;23694:6:::1;::::0;:42:::1;::::0;:29:::1;::::0;23671:1;;23694:29;;:10:::1;:17::i;:42::-;23683:8;:53;;;;23767:60;23813:13;;23767:41;23801:6;;23767:29;23784:11;;23767:12;;:16;;:29;;;;:::i;:60::-;23747:17;:80:::0;23411:425::o;22270:222::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;22349:10:::1;::::0;22341:37:::1;;;;-1:-1:-1::0;;;22341:37:0::1;;;;;;;:::i;:::-;22416:10;::::0;:21:::1;::::0;22429:8:::1;22416:21;:::i;:::-;22397:15;:40;;22389:61;;;;-1:-1:-1::0;;;22389:61:0::1;;;;;;;:::i;:::-;22461:12;:23:::0;22270:222::o;22741:252::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;22824:10:::1;::::0;22816:37:::1;;;;-1:-1:-1::0;;;22816:37:0::1;;;;;;;:::i;:::-;22899:10;::::0;:21:::1;::::0;22912:8:::1;22899:21;:::i;:::-;22880:15;:40;;22872:61;;;;-1:-1:-1::0;;;22872:61:0::1;;;;;;;:::i;:::-;22960:14;:25:::0;;;::::1;;-1:-1:-1::0;;;22960:25:0::1;-1:-1:-1::0;;;;22960:25:0;;::::1;::::0;;;::::1;::::0;;22741:252::o;20621:154::-;20117:8;;-1:-1:-1;;;;;20117:8:0;4536:10;20117:24;20109:72;;;;-1:-1:-1;;;20109:72:0;;;;;;;:::i;:::-;20720:16:::1;:47:::0;;-1:-1:-1;;;;;;20720:47:0::1;-1:-1:-1::0;;;;;20720:47:0;;;::::1;::::0;;;::::1;::::0;;20621:154::o;23135:266::-;20249:10;;-1:-1:-1;;;;;20249:10:0;4536;20249:26;20241:71;;;;-1:-1:-1;;;20241:71:0;;;;;;;:::i;:::-;23233:10:::1;::::0;23225:37:::1;;;;-1:-1:-1::0;;;23225:37:0::1;;;;;;;:::i;:::-;23308:10;::::0;:21:::1;::::0;23321:8:::1;23308:21;:::i;:::-;23289:15;:40;;23281:61;;;;-1:-1:-1::0;;;23281:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23361:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23361:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23135:266::o;21001:99::-;20382:7;;-1:-1:-1;;;;;20382:7:0;4536:10;20382:23;20374:70;;;;-1:-1:-1;;;20374:70:0;;;;;;;:::i;:::-;21079:13:::1;::::0;;-1:-1:-1;;;;21062:30:0;::::1;-1:-1:-1::0;;;21079:13:0;;;::::1;;;21078:14;21062:30:::0;;::::1;;::::0;;21001:99::o;7532:98::-;7590:7;7617:5;7621:1;7617;:5;:::i;32104:380::-;-1:-1:-1;;;;;32240:19:0;;32232:68;;;;-1:-1:-1;;;32232:68:0;;11714:2:1;32232:68:0;;;11696:21:1;11753:2;11733:18;;;11726:30;11792:34;11772:18;;;11765:62;-1:-1:-1;;;11843:18:1;;;11836:34;11887:19;;32232:68:0;11512:400:1;32232:68:0;-1:-1:-1;;;;;32319:21:0;;32311:68;;;;-1:-1:-1;;;32311:68:0;;7796:2:1;32311:68:0;;;7778:21:1;7835:2;7815:18;;;7808:30;7874:34;7854:18;;;7847:62;-1:-1:-1;;;7925:18:1;;;7918:32;7967:19;;32311:68:0;7594:398:1;32311:68:0;-1:-1:-1;;;;;32392:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;32444:32;;12872:25:1;;;32444:32:0;;12845:18:1;32444:32:0;;;;;;;32104:380;;;:::o;32771:453::-;-1:-1:-1;;;;;26774:18:0;;;32906:24;26774:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;32973:37:0;;32969:248;;33055:6;33035:16;:26;;33027:68;;;;-1:-1:-1;;;33027:68:0;;8199:2:1;33027:68:0;;;8181:21:1;8238:2;8218:18;;;8211:30;8277:31;8257:18;;;8250:59;8326:18;;33027:68:0;7997:353:1;33027:68:0;33139:51;33148:5;33155:7;33183:6;33164:16;:25;33139:8;:51::i;:::-;32895:329;32771:453;;;:::o;29821:1216::-;29944:13;;29909:4;;-1:-1:-1;;;29944:13:0;;;;29936:40;;;;-1:-1:-1;;;29936:40:0;;7453:2:1;29936:40:0;;;7435:21:1;7492:2;7472:18;;;7465:30;-1:-1:-1;;;7511:18:1;;;7504:44;7565:18;;29936:40:0;7251:338:1;29936:40:0;-1:-1:-1;;;;;29996:12:0;;;;;;:4;:12;;;;;;;;29995:13;:33;;;;-1:-1:-1;;;;;;30013:15:0;;;;;;:4;:15;;;;;;;;30012:16;29995:33;29987:42;;;;;;30045:16;;-1:-1:-1;;;30045:16:0;;;;30042:73;;;30071:41;30086:6;30094:9;30105:6;30071:14;:41::i;:::-;30064:48;;;;30042:73;30145:12;;30135:6;:22;;:49;;;-1:-1:-1;;;;;;30161:23:0;;;;;;:15;:23;;;;;;;;30135:49;30127:75;;;;-1:-1:-1;;;30127:75:0;;8893:2:1;30127:75:0;;;8875:21:1;8932:2;8912:18;;;8905:30;-1:-1:-1;;;8951:18:1;;;8944:43;9004:18;;30127:75:0;8691:337:1;30127:75:0;-1:-1:-1;;;;;30219:26:0;;;;;;:15;:26;;;;;;;;30218:27;:45;;;;-1:-1:-1;30249:14:0;;-1:-1:-1;;;30249:14:0;;;;30218:45;30215:162;;;30333:10;;-1:-1:-1;;;;;30297:20:0;;:9;:20;;;;;;;;;;;:32;;30322:6;30297:24;:32::i;:::-;:46;;30289:76;;;;-1:-1:-1;;;30289:76:0;;9976:2:1;30289:76:0;;;9958:21:1;10015:2;9995:18;;;9988:30;-1:-1:-1;;;10034:18:1;;;10027:47;10091:18;;30289:76:0;9774:341:1;30289:76:0;30406:4;;-1:-1:-1;;;;;30406:4:0;30392:10;:18;;;;:39;;-1:-1:-1;30415:16:0;;-1:-1:-1;;;30415:16:0;;;;30414:17;30392:39;:64;;;;-1:-1:-1;30435:21:0;;-1:-1:-1;;;30435:21:0;;;;30392:64;:109;;;;-1:-1:-1;30488:13:0;;30478:4;30460:9;:24;;;;;;;;;;;:41;;30392:109;30389:128;;;30504:10;:8;:10::i;:::-;30549:53;;;;;;;;;;;-1:-1:-1;;;30549:53:0;;;;;;;;-1:-1:-1;;;;;30549:17:0;;-1:-1:-1;30549:17:0;;;;;;;;;;;;:53;;30571:6;;30549:21;:53::i;:::-;-1:-1:-1;;;;;30529:17:0;;:9;:17;;;;;;;;;;;:73;;;;30646:11;:19;;;;;;;;30645:20;:47;;;;-1:-1:-1;;;;;;30670:22:0;;;;;;:11;:22;;;;;;;;30669:23;30645:47;:93;;30732:6;30645:93;;;30695:34;30703:6;30711:9;30722:6;30695:7;:34::i;:::-;-1:-1:-1;;;;;30772:20:0;;:9;:20;;;;;;;;;;;30623:115;;-1:-1:-1;30772:37:0;;30623:115;30772:24;:37::i;:::-;-1:-1:-1;;;;;30749:20:0;;;:9;:20;;;;;;;;;;:60;;;;30835:4;;30825:14;;;30835:4;;30825:14;:58;;;;-1:-1:-1;30861:10:0;;:22;;30874:9;30861:22;:::i;:::-;30843:15;:40;30825:58;30822:128;;;30914:24;;-1:-1:-1;;;30914:24:0;;7453:2:1;30914:24:0;;;7435:21:1;7492:2;7472:18;;;7465:30;-1:-1:-1;;;7511:18:1;;;7504:44;7565:18;;30914:24:0;7251:338:1;30822:128:0;30984:9;-1:-1:-1;;;;;30967:40:0;30976:6;-1:-1:-1;;;;;30967:40:0;;30995:11;30967:40;;;;12872:25:1;;12860:2;12845:18;;12726:177;30967:40:0;;;;;;;;-1:-1:-1;31025:4:0;;29821:1216;-1:-1:-1;;;;29821:1216:0:o;7913:98::-;7971:7;7998:5;8002:1;7998;:5;:::i;31049:330::-;31179:53;;;;;;;;;;;-1:-1:-1;;;31179:53:0;;;;;;;;-1:-1:-1;;;;;31179:17:0;;31142:4;31179:17;;;;;;;;;;;:53;;31201:6;;31179:21;:53::i;:::-;-1:-1:-1;;;;;31159:17:0;;;:9;:17;;;;;;;;;;;:73;;;;31266:20;;;;;;;:32;;31291:6;31266:24;:32::i;:::-;-1:-1:-1;;;;;31243:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;31314:35;12872:25:1;;;31243:20:0;;31314:35;;;;;;12845:18:1;31314:35:0;;;;;;;-1:-1:-1;31367:4:0;31049:330;;;;;:::o;33679:2234::-;19988:16;:23;;-1:-1:-1;;;;19988:23:0;-1:-1:-1;;;19988:23:0;;;33785:4:::1;19988:23:::0;33767:24;;;::::1;::::0;;;;;;;33994:8:::1;::::0;33767:24;;19988:23;;;;;;;34006:1:::1;-1:-1:-1::0;33990:241:0::1;;34042:62;34102:1;34042:55;34079:17;;34042:32;34062:11;;34042:15;:19;;:32;;;;:::i;:::-;:36:::0;::::1;:55::i;:62::-;34024:80;;33990:241;;;34155:47;34200:1;34155:40;34186:8;;34155:26;34175:5;;34155:15;:19;;:26;;;;:::i;:47::-;34137:65;;33990:241;34243:20;34266:36;:15:::0;34286;34266:19:::1;:36::i;:::-;34339:16;::::0;;34353:1:::1;34339:16:::0;;;;;::::1;::::0;;34243:59;;-1:-1:-1;34315:21:0::1;::::0;34339:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;34339:16:0::1;34315:40;;34384:4;34366;34371:1;34366:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34366:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;34410:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;34410:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;34366:7;;34410:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34400:4;34405:1;34400:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34400:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;34436:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;34436:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;34508:12;;34436:6:::1;::::0;34551:4;;34578::::1;::::0;34598:15:::1;::::0;34436:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34637:17;34657:21;34637:41;;34756:1;34744:8;;:13;34740:508;;34787:50;34819:17;;34787:27;34801:12;;34787:9;:13;;:27;;;;:::i;:50::-;34774:63;;34865:44;34891:17;;34865:21;34879:6;;34865:9;:13;;:21;;;;:::i;:44::-;34852:57;;34945:56;34999:1;34945:49;34976:17;;34945:26;34959:11;;34945:9;:13;;:26;;;;:::i;:56::-;34924:77;;34740:508;;;35049:35;35075:8;;35049:21;35063:6;;35049:9;:13;;:21;;;;:::i;:35::-;35036:48;;35112:35;35138:8;;35112:21;35126:6;;35112:9;:13;;:21;;;;:::i;:35::-;35099:48;;35183:41;35222:1;35183:34;35208:8;;35183:20;35197:5;;35183:9;:13;;:20;;;;:::i;:41::-;35162:62;;34740:508;35260:21;35284:65;35330:18:::0;35284:41:::1;35314:10:::0;35284:41;:9;35298:10;35284:13:::1;:25::i;:65::-;35260:89:::0;-1:-1:-1;35365:13:0;;35362:205:::1;;35402:16;;;;;;;;;-1:-1:-1::0;;;;;35402:16:0::1;-1:-1:-1::0;;;;;35394:34:0::1;;35436:10;35394:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;35476:9:0::1;::::0;:30:::1;::::0;-1:-1:-1;;;;;35476:9:0;;::::1;::::0;-1:-1:-1;35476:30:0;::::1;;;::::0;-1:-1:-1;35495:10:0;;-1:-1:-1;35476:9:0::1;:30:::0;:9;:30;35495:10;35476:9;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;35521:10:0::1;::::0;:34:::1;::::0;-1:-1:-1;;;;;35521:10:0;;::::1;::::0;:34;::::1;;;::::0;35541:13;;35521:10:::1;:34:::0;:10;:34;35541:13;35521:10;:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;35362:205;35582:19:::0;;35579:315:::1;;35617:6;::::0;:265:::1;::::0;-1:-1:-1;;;35617:265:0;;35693:4:::1;35617:265;::::0;::::1;5952:34:1::0;6002:18;;;5995:34;;;35617:6:0::1;6045:18:1::0;;;6038:34;;;6088:18;;;6081:34;35791:42:0::1;6131:19:1::0;;;6124:44;35852:15:0::1;6184:19:1::0;;;6177:35;-1:-1:-1;;;;;35617:6:0;;::::1;::::0;:22:::1;::::0;35647:18;;5886:19:1;;35617:265:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35579:315;-1:-1:-1::0;;20034:16:0;:24;;-1:-1:-1;;;;20034:24:0;;;-1:-1:-1;;;;;;;33679:2234:0:o;9811:240::-;9931:7;9992:12;9984:6;;;;9976:29;;;;-1:-1:-1;;;9976:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;10027:5:0;;;9811:240::o;33232:439::-;33372:4;;33318:7;;;;-1:-1:-1;;;;;33372:17:0;;;:4;;:17;:48;;33412:8;;33372:48;;;33392:17;;33372:48;33348:72;-1:-1:-1;33431:17:0;33451:34;33481:3;33451:25;:6;33348:72;33451:10;:25::i;:34::-;33543:4;33525:9;:24;;;;;;;;;;;33431:54;;-1:-1:-1;33525:39:0;;33431:54;33525:28;:39::i;:::-;33516:4;33498:9;:24;;;;;;;;;;;;:66;;;;33580:42;12872:25:1;;;33516:4:0;;-1:-1:-1;;;;;33580:42:0;;;;;12845:18:1;33580:42:0;;;;;;;33642:21;:6;33653:9;33642:10;:21::i;:::-;33635:28;33232:439;-1:-1:-1;;;;;;33232:439:0:o;8270:98::-;8328:7;8355:5;8359:1;8355;:5;:::i;8669:98::-;8727:7;8754:5;8758:1;8754;:5;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;1086:388::-;1154:6;1162;1215:2;1203:9;1194:7;1190:23;1186:32;1183:52;;;1231:1;1228;1221:12;1183:52;1270:9;1257:23;1289:31;1314:5;1289:31;:::i;:::-;1339:5;-1:-1:-1;1396:2:1;1381:18;;1368:32;1409:33;1368:32;1409:33;:::i;:::-;1461:7;1451:17;;;1086:388;;;;;:::o;1479:456::-;1556:6;1564;1572;1625:2;1613:9;1604:7;1600:23;1596:32;1593:52;;;1641:1;1638;1631:12;1593:52;1680:9;1667:23;1699:31;1724:5;1699:31;:::i;:::-;1749:5;-1:-1:-1;1806:2:1;1791:18;;1778:32;1819:33;1778:32;1819:33;:::i;:::-;1479:456;;1871:7;;-1:-1:-1;;;1925:2:1;1910:18;;;;1897:32;;1479:456::o;1940:315::-;2005:6;2013;2066:2;2054:9;2045:7;2041:23;2037:32;2034:52;;;2082:1;2079;2072:12;2034:52;2121:9;2108:23;2140:31;2165:5;2140:31;:::i;:::-;2190:5;-1:-1:-1;2214:35:1;2245:2;2230:18;;2214:35;:::i;:::-;2204:45;;1940:315;;;;;:::o;2260:::-;2328:6;2336;2389:2;2377:9;2368:7;2364:23;2360:32;2357:52;;;2405:1;2402;2395:12;2357:52;2444:9;2431:23;2463:31;2488:5;2463:31;:::i;:::-;2513:5;2565:2;2550:18;;;;2537:32;;-1:-1:-1;;;2260:315:1:o;2580:1132::-;2664:6;2695:2;2738;2726:9;2717:7;2713:23;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2794:9;2781:23;2823:18;2864:2;2856:6;2853:14;2850:34;;;2880:1;2877;2870:12;2850:34;2918:6;2907:9;2903:22;2893:32;;2963:7;2956:4;2952:2;2948:13;2944:27;2934:55;;2985:1;2982;2975:12;2934:55;3021:2;3008:16;3043:2;3039;3036:10;3033:36;;;3049:18;;:::i;:::-;3095:2;3092:1;3088:10;3127:2;3121:9;3190:2;3186:7;3181:2;3177;3173:11;3169:25;3161:6;3157:38;3245:6;3233:10;3230:22;3225:2;3213:10;3210:18;3207:46;3204:72;;;3256:18;;:::i;:::-;3292:2;3285:22;3342:18;;;3376:15;;;;-1:-1:-1;3411:11:1;;;3441;;;3437:20;;3434:33;-1:-1:-1;3431:53:1;;;3480:1;3477;3470:12;3431:53;3502:1;3493:10;;3512:169;3526:2;3523:1;3520:9;3512:169;;;3583:23;3602:3;3583:23;:::i;:::-;3571:36;;3544:1;3537:9;;;;;3627:12;;;;3659;;3512:169;;;-1:-1:-1;3700:6:1;2580:1132;-1:-1:-1;;;;;;;;2580:1132:1:o;3717:180::-;3773:6;3826:2;3814:9;3805:7;3801:23;3797:32;3794:52;;;3842:1;3839;3832:12;3794:52;3865:26;3881:9;3865:26;:::i;3902:248::-;3967:6;3975;4028:2;4016:9;4007:7;4003:23;3999:32;3996:52;;;4044:1;4041;4034:12;3996:52;4067:26;4083:9;4067:26;:::i;4155:180::-;4214:6;4267:2;4255:9;4246:7;4242:23;4238:32;4235:52;;;4283:1;4280;4273:12;4235:52;-1:-1:-1;4306:23:1;;4155:180;-1:-1:-1;4155:180:1:o;4340:306::-;4428:6;4436;4444;4497:2;4485:9;4476:7;4472:23;4468:32;4465:52;;;4513:1;4510;4503:12;4465:52;4542:9;4536:16;4526:26;;4592:2;4581:9;4577:18;4571:25;4561:35;;4636:2;4625:9;4621:18;4615:25;4605:35;;4340:306;;;;;:::o;4651:523::-;4755:6;4763;4771;4779;4787;4795;4848:3;4836:9;4827:7;4823:23;4819:33;4816:53;;;4865:1;4862;4855:12;4816:53;-1:-1:-1;;4888:23:1;;;4958:2;4943:18;;4930:32;;-1:-1:-1;5009:2:1;4994:18;;4981:32;;5060:2;5045:18;;5032:32;;-1:-1:-1;5111:3:1;5096:19;;5083:33;;-1:-1:-1;5163:3:1;5148:19;5135:33;;-1:-1:-1;4651:523:1;-1:-1:-1;4651:523:1:o;6649:597::-;6761:4;6790:2;6819;6808:9;6801:21;6851:6;6845:13;6894:6;6889:2;6878:9;6874:18;6867:34;6919:1;6929:140;6943:6;6940:1;6937:13;6929:140;;;7038:14;;;7034:23;;7028:30;7004:17;;;7023:2;7000:26;6993:66;6958:10;;6929:140;;;7087:6;7084:1;7081:13;7078:91;;;7157:1;7152:2;7143:6;7132:9;7128:22;7124:31;7117:42;7078:91;-1:-1:-1;7230:2:1;7209:15;-1:-1:-1;;7205:29:1;7190:45;;;;7237:2;7186:54;;6649:597;-1:-1:-1;;;6649:597:1:o;8355:331::-;8557:2;8539:21;;;8596:1;8576:18;;;8569:29;-1:-1:-1;;;8629:2:1;8614:18;;8607:38;8677:2;8662:18;;8355:331::o;9033:332::-;9235:2;9217:21;;;9274:1;9254:18;;;9247:29;-1:-1:-1;;;9307:2:1;9292:18;;9285:39;9356:2;9341:18;;9033:332::o;9370:399::-;9572:2;9554:21;;;9611:2;9591:18;;;9584:30;9650:34;9645:2;9630:18;;9623:62;-1:-1:-1;;;9716:2:1;9701:18;;9694:33;9759:3;9744:19;;9370:399::o;10120:356::-;10322:2;10304:21;;;10341:18;;;10334:30;10400:34;10395:2;10380:18;;10373:62;10467:2;10452:18;;10120:356::o;11917:398::-;12119:2;12101:21;;;12158:2;12138:18;;;12131:30;12197:34;12192:2;12177:18;;12170:62;-1:-1:-1;;;12263:2:1;12248:18;;12241:32;12305:3;12290:19;;11917:398::o;12908:980::-;13170:4;13218:3;13207:9;13203:19;13249:6;13238:9;13231:25;13275:2;13313:6;13308:2;13297:9;13293:18;13286:34;13356:3;13351:2;13340:9;13336:18;13329:31;13380:6;13415;13409:13;13446:6;13438;13431:22;13484:3;13473:9;13469:19;13462:26;;13523:2;13515:6;13511:15;13497:29;;13544:1;13554:195;13568:6;13565:1;13562:13;13554:195;;;13633:13;;-1:-1:-1;;;;;13629:39:1;13617:52;;13724:15;;;;13689:12;;;;13665:1;13583:9;13554:195;;;-1:-1:-1;;;;;;;13805:32:1;;;;13800:2;13785:18;;13778:60;-1:-1:-1;;;13869:3:1;13854:19;13847:35;13766:3;12908:980;-1:-1:-1;;;12908:980:1:o;14082:128::-;14122:3;14153:1;14149:6;14146:1;14143:13;14140:39;;;14159:18;;:::i;:::-;-1:-1:-1;14195:9:1;;14082:128::o;14215:217::-;14255:1;14281;14271:132;;14325:10;14320:3;14316:20;14313:1;14306:31;14360:4;14357:1;14350:15;14388:4;14385:1;14378:15;14271:132;-1:-1:-1;14417:9:1;;14215:217::o;14437:168::-;14477:7;14543:1;14539;14535:6;14531:14;14528:1;14525:21;14520:1;14513:9;14506:17;14502:45;14499:71;;;14550:18;;:::i;:::-;-1:-1:-1;14590:9:1;;14437:168::o;14610:125::-;14650:4;14678:1;14675;14672:8;14669:34;;;14683:18;;:::i;:::-;-1:-1:-1;14720:9:1;;14610:125::o;14740:380::-;14819:1;14815:12;;;;14862;;;14883:61;;14937:4;14929:6;14925:17;14915:27;;14883:61;14990:2;14982:6;14979:14;14959:18;14956:38;14953:161;;;15036:10;15031:3;15027:20;15024:1;15017:31;15071:4;15068:1;15061:15;15099:4;15096:1;15089:15;14953:161;;14740:380;;;:::o;15125:135::-;15164:3;-1:-1:-1;;15185:17:1;;15182:43;;;15205:18;;:::i;:::-;-1:-1:-1;15252:1:1;15241:13;;15125:135::o;15265:127::-;15326:10;15321:3;15317:20;15314:1;15307:31;15357:4;15354:1;15347:15;15381:4;15378:1;15371:15;15397:127;15458:10;15453:3;15449:20;15446:1;15439:31;15489:4;15486:1;15479:15;15513:4;15510:1;15503:15;15529:127;15590:10;15585:3;15581:20;15578:1;15571:31;15621:4;15618:1;15611:15;15645:4;15642:1;15635:15;15661:131;-1:-1:-1;;;;;15736:31:1;;15726:42;;15716:70;;15782:1;15779;15772:12;15716:70;15661:131;:::o

Swarm Source

ipfs://66bde435a58658fde273e258146139b21fe9591d7f8c1a1c260299e6685b510b
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.