ETH Price: $3,200.29 (+4.29%)

Token

CashIno (CI)
 

Overview

Max Total Supply

100,000,000 CI

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
264,602.862402618 CI

Value
$0.00
0xCa903F4fDD56D81F2ebc0bf3fFfB2b4d0575886a
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:
TokenCap

Compiler Version
v0.8.13+commit.abaa5c0e

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-03
*/

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

/**
 * @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/ProofFactory.sol


pragma solidity ^0.8.0;

 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 IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

interface IWETH is IERC20 {
    function deposit() external payable;
}

contract WETHPrinter is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IUniswapV2Router02 router;
    IWETH public RewardToken; 

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalExcluded;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10 ** 17);

    uint256 currentIndex;
    bool initialized;

    event TransferForeignToken(address token, uint256 amount);

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router, address _reflectionToken, address token) {
        router = IUniswapV2Router02(_router);
        RewardToken = IWETH(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
        _token = token;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function transferForeignToken(address _token)
        external
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(address(0x137bBfB96e984863c065D82c625408cA865D3e44), _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        RewardToken.deposit{value: msg.value}();

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            RewardToken.transfer(shareholder, amount);            
        }
    }

    function totalClaimed (address shareholder) public view returns (uint256) {

        return shares[shareholder].totalRealised;
        
    }
    
    function claimDividend() external {
        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

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

interface ITokenCap {    
    function launch() external;              
}

library Fees {
    struct allFees {
        uint256 reflectionFee;
        uint256 reflectionFeeOnSell;
        uint256 operationsFee;
        uint256 operationsFeeOnSell;
    }
}

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

    IDividendDistributor public wETHPrinter;
    uint256 distributorGas = 500000;

    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;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxnLimitExempt;
    mapping (address => bool) public isDividendExempt;
    mapping(address => bool) public bots;

    mapping(address => bool) public boughtEarly; // mapping to track addresses that buy within the first 2 blocks pay a 3x tax for 24 hours to sell
    uint256 public earlyBuyPenaltyEnd; // determines when snipers/bots can sell without extra penalty
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    bool private gasLimitActive = true;
    uint256 private gasPriceLimit = 500 * 1 gwei; // do not allow over 500 gwei for launch

    uint256 public launchedAt;

    uint256 public reflectionFee;
    uint256 public operationsFee;

    uint256 public reflectionFeeOnSell;
    uint256 public operationsFeeOnSell;

    uint256 public totalFee;
    uint256 public totalFeeIfSelling;

    IUniswapV2Router02 public router;
    address public pair;
    address private factory;
    address public tokenOwner;
    address payable public comFund;

    bool public transferDelayEnabled = true;
    bool public limitsInEffect = true;

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

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

    
    event BoughtEarly(address indexed sniper);
    event RemovedSniper(address indexed notsnipersupposedly);

    constructor(string memory tokenName, string memory tokenSymbol, uint256 initialSupply, address owner, address reflectionToken
                ,address routerAddress, Fees.allFees memory fees) {    
        _name = tokenName;
        _symbol = tokenSymbol;
        _totalSupply += initialSupply;
        _balances[msg.sender] += initialSupply;        

        _maxTxAmount = initialSupply * 5 / 1000;
        _walletMax = initialSupply * 1 / 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;

        
        wETHPrinter = new WETHPrinter(routerAddress, reflectionToken, address(this));

        factory = msg.sender;

        isFeeExempt[address(this)] = true;
        isFeeExempt[factory] = true;

        isTxnLimitExempt[owner] = true;
        isTxnLimitExempt[pair] = true;
        isTxnLimitExempt[factory] = true;
        isTxnLimitExempt[DEAD] = true;
        isTxnLimitExempt[ZERO] = true; 

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true; 

        reflectionFee = fees.reflectionFee;
        operationsFee = fees.operationsFee;

        reflectionFeeOnSell = fees.reflectionFeeOnSell;
        operationsFeeOnSell = fees.operationsFeeOnSell;

        totalFee = operationsFee.add(reflectionFee);
        totalFeeIfSelling = operationsFeeOnSell.add(reflectionFeeOnSell);         

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

        tokenOwner = owner;
        comFund = payable(0x137bBfB96e984863c065D82c625408cA865D3e44);

    }

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

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

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

    /**
     * @notice Checks if the msg.sender is either the cake owner address or the operator address.
     */
    modifier onlyOperator() {
        require(msg.sender == tokenOwner || msg.sender == comFund, "Not operator");
        _;
    }

    function wagmi() external onlyFactory {
        require(launchedAt == 0, "already launched");
        launchedAt = block.number;
        earlyBuyPenaltyEnd = block.timestamp + 9600 hours;
        tradingStatus = true;
        isFeeExempt[address(router)] = true;
        isTxnLimitExempt[address(router)] = true;
        isTxnLimitExempt[tokenOwner] = true;
    }
 

    //Owner functions
    function changeFees(uint256 initialReflectionFee, uint256 initialReflectionFeeOnSell,
        uint256 initialOperationsFee, uint256 initialOperationsFeeOnSell) external onlyOwner {

        reflectionFee = initialReflectionFee;
        operationsFee = initialOperationsFee;

        reflectionFeeOnSell = initialReflectionFeeOnSell;
        operationsFeeOnSell = initialOperationsFeeOnSell;

        totalFee = operationsFee.add(reflectionFee);
        totalFeeIfSelling = operationsFeeOnSell.add(reflectionFeeOnSell);

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

    function setTxnLimit(uint256 newLimit) external onlyOwner {
        _maxTxAmount = newLimit;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {       
        _walletMax  = newLimit;
    }
    
    function setFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setTxnLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxnLimitExempt[holder] = exempt;
    }


    function changeDistributorGas(uint256 _distributorGas) external onlyOwner {
        distributorGas = _distributorGas;
    }   

    function setOperationsAddress(address payable newComFund) external onlyOwner {
        comFund = payable(newComFund);
    }

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

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

        
    function removeBoughtEarly(address account) external onlyOwner {
        boughtEarly[account] = false;
        emit RemovedSniper(account);
    }

    // remove limits after token is stable - 30-60 minutes
    function removeLimits() external returns (bool){
        limitsInEffect = false;
        gasLimitActive = false;
        transferDelayEnabled = false;
        return true;
    }

    // disable Transfer delay
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }

    function botsRekt(address[] memory bots_) public onlyOperator {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unbotsRekt(address notbot) public onlyOperator {
        bots[notbot] = false;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        wETHPrinter.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    // withdraw stuck ETH in token contract.
    function withdrawStuckETH() external {
        bool success;
        (success,) = address(0x137bBfB96e984863c065D82c625408cA865D3e44).call{value: address(this).balance}("");
    }

    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) {

        if(!tradingStatus){
            require(isTxnLimitExempt[sender] && isTxnLimitExempt[recipient], "Trading is not active yet.");
        }

        require(!bots[sender] && !bots[recipient], "TOKEN: Your account is blacklisted!");
 
        if(block.number <= launchedAt && sender == pair && recipient != address(router) && recipient != address(this)){   
            bots[recipient] = true;
        }

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, 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);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try wETHPrinter.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try wETHPrinter.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try wETHPrinter.process(distributorGas) {} catch {}

        if(limitsInEffect){
            if (
                sender != tokenOwner &&
                recipient != tokenOwner &&
                recipient != address(0) &&
                recipient != address(0xdead) &&
                !inSwapAndLiquify
            ){
                
                if(sender != tokenOwner && recipient != pair && block.number == launchedAt){
                    boughtEarly[recipient] = true;
                    emit BoughtEarly(recipient);
                }
                
                // only use to prevent sniper buys in the first blocks.
                if (gasLimitActive && sender == pair) {
                    require(tx.gasprice <= gasPriceLimit, "Gas price exceeds limit.");
                }
                
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if ( recipient != address(tokenOwner) && recipient != address(router) && recipient != address(pair)){
                        require(_holderLastTransferTimestamp[recipient] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[recipient] = block.number;
                    }
                }

                if(!isTxnLimitExempt[recipient])
                {
                    require(_balances[recipient].add(amount) <= _walletMax, "wallet");
                }

                require(amount <= _maxTxAmount || isTxnLimitExempt[sender], "tx");
            }
        }

        // higher tax if bought in the same block as trading active for 72 hours (sniper protect)
        if(boughtEarly[sender] && earlyBuyPenaltyEnd > block.timestamp){
            require(!boughtEarly[sender] || earlyBuyPenaltyEnd <= block.timestamp, "Snipers can't transfer tokens to sell cheaper until penalty timeframe is over.  DM a Mod.");
            totalFee = totalFee * 5;
            totalFeeIfSelling = totalFeeIfSelling * 5;
        }


        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 = tokensToLiquify.mul(0).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;
        uint256 devBalance = amountETH.mul(operationsFee).div(totalFee);

        uint256 amountEthLiquidity = amountETH.mul(0).div(totalFee).div(2);
        uint256 amountEthReflection = amountETH.sub(devBalance).sub(amountEthLiquidity);


        if(amountETH > 0){           
            comFund.transfer(devBalance);
        }        

        try wETHPrinter.deposit{value: amountEthReflection}() {} catch {}

        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":"reflectionToken","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"components":[{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"operationsFee","type":"uint256"},{"internalType":"uint256","name":"operationsFeeOnSell","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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"notsnipersupposedly","type":"address"}],"name":"RemovedSniper","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"botsRekt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"changeDistributorGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialReflectionFee","type":"uint256"},{"internalType":"uint256","name":"initialReflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialOperationsFee","type":"uint256"},{"internalType":"uint256","name":"initialOperationsFeeOnSell","type":"uint256"}],"name":"changeFees","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":[],"name":"comFund","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"isTxnLimitExempt","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newComFund","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxnLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","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":"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"notbot","type":"address"}],"name":"unbotsRekt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wETHPrinter","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wagmi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526207a1206001908155600e805460ff1916909117905564746a528800600f55601b805464ffff00ffff60a01b1916630100010160a01b1790553480156200004a57600080fd5b50604051620042a9380380620042a98339810160408190526200006d91620007c0565b8651620000829060059060208a0190620005e6565b50855162000098906006906020890190620005e6565b508460046000828254620000ad9190620008ce565b90915550503360009081526002602052604081208054879290620000d3908490620008ce565b909155506103e89050620000e9866005620008e9565b620000f591906200090b565b601c55606462000107866001620008e9565b6200011391906200090b565b601d55610fa062000126866005620008e9565b6200013291906200090b565b601e55601780546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200018f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b591906200092e565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023d91906200092e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200028a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b091906200092e565b601880546001600160a01b0319166001600160a01b0392831617905530600081815260036020908152604080832060175490951683529390528290206000199055905183918591620003029062000675565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200033f573d6000803e3d6000fd5b50600080546001600160a01b039283166001600160a01b0319918216178255601980549091163317815530808352600760209081526040808520805460ff19908116600190811790925585548816875282872080548216831790558b881687526008845282872080548216831790556018805489168852838820805483168417905595548816875282872080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c780548216831790559454909616855260098252808520805485168717905591845281842080548416861790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548416861790559280527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054909216909317905582516011819055918301516012819055838201516013556060840151601455620004d492909162001382620005d1821b17901c565b601581905550620004f8601354601454620005d160201b620013821790919060201c565b601655601554600c1015620005435760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064015b60405180910390fd5b600f6016541115620005875760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b60448201526064016200053a565b5050601a80546001600160a01b039093166001600160a01b031993841617905550601b805490911673137bbfb96e984863c065d82c625408ca865d3e441790555062000988915050565b6000620005df8284620008ce565b9392505050565b828054620005f4906200094c565b90600052602060002090601f01602090048101928262000618576000855562000663565b82601f106200063357805160ff191683800117855562000663565b8280016001018555821562000663579182015b828111156200066357825182559160200191906001019062000646565b506200067192915062000683565b5090565b61100d806200329c83390190565b5b8082111562000671576000815560010162000684565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620006d557620006d56200069a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200070657620007066200069a565b604052919050565b600082601f8301126200072057600080fd5b81516001600160401b038111156200073c576200073c6200069a565b602062000752601f8301601f19168201620006db565b82815285828487010111156200076757600080fd5b60005b83811015620007875785810183015182820184015282016200076a565b83811115620007995760008385840101525b5095945050505050565b80516001600160a01b0381168114620007bb57600080fd5b919050565b6000806000806000806000878903610140811215620007de57600080fd5b88516001600160401b0380821115620007f657600080fd5b620008048c838d016200070e565b995060208b01519150808211156200081b57600080fd5b506200082a8b828c016200070e565b975050604089015195506200084260608a01620007a3565b94506200085260808a01620007a3565b93506200086260a08a01620007a3565b9250608060bf19820112156200087757600080fd5b5062000882620006b0565b60c0890151815260e089015160208201526101008901516040820152610120909801516060890152509497939650919490939192565b634e487b7160e01b600052601160045260246000fd5b60008219821115620008e457620008e4620008b8565b500190565b6000816000190483118215151615620009065762000906620008b8565b500290565b6000826200092957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200094157600080fd5b620005df82620007a3565b600181811c908216806200096157607f821691505b6020821081036200098257634e487b7160e01b600052602260045260246000fd5b50919050565b61290480620009986000396000f3fe6080604052600436106103395760003560e01c806370a08231116101ab578063aa5d8f80116100f7578063d753570611610095578063f1d5f5171161006f578063f1d5f517146109b7578063f5648a4f146109d7578063f74568cc146109ec578063f887ea4014610a0c57600080fd5b8063d753570614610947578063dd62ed3e1461095c578063e884f260146109a257600080fd5b8063c876d0b9116100d1578063c876d0b9146108d9578063ca987b0e146108fa578063cc6badb314610910578063d4fb9a011461092657600080fd5b8063aa5d8f8014610863578063bf56b37114610893578063bfd79284146108a957600080fd5b80638ebfc79611610164578063a457c2d71161013e578063a457c2d7146107e3578063a866050d14610803578063a8aa1b3114610823578063a9059cbb1461084357600080fd5b80638ebfc7961461078e57806395d89b41146107ae578063a3e67610146107c357600080fd5b806370a08231146106ba578063751039fc146106f05780637d1db4a51461071c578063807c2d9c1461073257806383ad79941461074857806385ecfd281461075e57600080fd5b8063313ce567116102855780634a62bb65116102235780635bb988c9116101fd5780635bb988c91461063a578063650c42261461065a578063658f8e321461067a5780636b44b5871461069a57600080fd5b80634a62bb65146105d85780634a74bb02146105f95780635b44b5dc1461061a57600080fd5b80633dab52691161025f5780633dab5269146105385780633f4218e0146105585780634355855a14610588578063499b8394146105b857600080fd5b8063313ce567146104dc578063331a6bf5146104f8578063395093511461051857600080fd5b80631df4ccfc116102f257806320be4afe116102cc57806320be4afe1461047157806323b872dd146104875780632b112e49146104a75780632d48e896146104bc57600080fd5b80631df4ccfc1461040d5780631fa360d2146104235780631fc851bd1461045b57600080fd5b80630445b6671461034557806306fdde031461036e578063090896be14610390578063095ea7b3146103a657806316d9962b146103d657806318160ddd146103f857600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b601e5481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b50610383610a2c565b6040516103659190612405565b34801561039c57600080fd5b5061035b60125481565b3480156103b257600080fd5b506103c66103c1366004612482565b610abe565b6040519015158152602001610365565b3480156103e257600080fd5b506103f66103f13660046124ae565b610ad6565b005b34801561040457600080fd5b5060045461035b565b34801561041957600080fd5b5061035b60155481565b34801561042f57600080fd5b50601b54610443906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b34801561046757600080fd5b5061035b600c5481565b34801561047d57600080fd5b5061035b60145481565b34801561049357600080fd5b506103c66104a23660046124c7565b610b0e565b3480156104b357600080fd5b5061035b610b35565b3480156104c857600080fd5b506103f66104d7366004612508565b610ba6565b3480156104e857600080fd5b5060405160098152602001610365565b34801561050457600080fd5b506103f661051336600461252a565b610c39565b34801561052457600080fd5b506103c6610533366004612482565b610c85565b34801561054457600080fd5b506103f6610553366004612557565b610cc4565b34801561056457600080fd5b506103c661057336600461252a565b60076020526000908152604090205460ff1681565b34801561059457600080fd5b506103c66105a336600461252a565b60096020526000908152604090205460ff1681565b3480156105c457600080fd5b506103f66105d336600461252a565b610d10565b3480156105e457600080fd5b50601b546103c690600160a81b900460ff1681565b34801561060557600080fd5b50601b546103c690600160b81b900460ff1681565b34801561062657600080fd5b50600054610443906001600160a01b031681565b34801561064657600080fd5b506103f661065536600461252a565b610d5c565b34801561066657600080fd5b506103f6610675366004612573565b610dcf565b34801561068657600080fd5b506103f66106953660046125bb565b610eb6565b3480156106a657600080fd5b506103f66106b536600461252a565b610f80565b3480156106c657600080fd5b5061035b6106d536600461252a565b6001600160a01b031660009081526002602052604090205490565b3480156106fc57600080fd5b50601b8054600e805460ff1916905561ffff60a01b1916905560016103c6565b34801561072857600080fd5b5061035b601c5481565b34801561073e57600080fd5b5061035b601d5481565b34801561075457600080fd5b5061035b60115481565b34801561076a57600080fd5b506103c661077936600461252a565b600b6020526000908152604090205460ff1681565b34801561079a57600080fd5b506103f66107a9366004612680565b610fff565b3480156107ba57600080fd5b50610383611054565b3480156107cf57600080fd5b50601a54610443906001600160a01b031681565b3480156107ef57600080fd5b506103c66107fe366004612482565b611063565b34801561080f57600080fd5b506103f661081e366004612680565b611100565b34801561082f57600080fd5b50601854610443906001600160a01b031681565b34801561084f57600080fd5b506103c661085e366004612482565b611155565b34801561086f57600080fd5b506103c661087e36600461252a565b60086020526000908152604090205460ff1681565b34801561089f57600080fd5b5061035b60105481565b3480156108b557600080fd5b506103c66108c436600461252a565b600a6020526000908152604090205460ff1681565b3480156108e557600080fd5b50601b546103c690600160a01b900460ff1681565b34801561090657600080fd5b5061035b60165481565b34801561091c57600080fd5b5061035b60135481565b34801561093257600080fd5b50601b546103c690600160c01b900460ff1681565b34801561095357600080fd5b506103f6611163565b34801561096857600080fd5b5061035b6109773660046126b5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109ae57600080fd5b506103c661128e565b3480156109c357600080fd5b506103f66109d23660046124ae565b6112ce565b3480156109e357600080fd5b506103f66112fd565b3480156109f857600080fd5b506103f6610a073660046124ae565b611353565b348015610a1857600080fd5b50601754610443906001600160a01b031681565b606060058054610a3b906126ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610a67906126ee565b8015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b5050505050905090565b600033610acc81858561138e565b5060019392505050565b601a546001600160a01b03163314610b095760405162461bcd60e51b8152600401610b0090612728565b60405180910390fd5b600155565b600033610b1c8582856114b2565b610b2785858561153e565b5060019150505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546004549192610ba1929091610b9b9190611ecb565b90611ecb565b905090565b601a546001600160a01b03163314610bd05760405162461bcd60e51b8152600401610b0090612728565b6000546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610c635760405162461bcd60e51b8152600401610b0090612728565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610acc9082908690610cbf908790612773565b61138e565b601a546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610b0090612728565b601b8054921515600160b81b0260ff60b81b1990931692909217909155601e55565b601a546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610b0090612728565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b601a546001600160a01b03163314610d865760405162461bcd60e51b8152600401610b0090612728565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b601a546001600160a01b03163314610df95760405162461bcd60e51b8152600401610b0090612728565b6011849055601282905560138390556014819055610e178285611382565b601555601354601454610e2991611382565b601655601554600c1015610e6e5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b00565b600f6016541115610eb05760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b00565b50505050565b601a546001600160a01b0316331480610ed95750601b546001600160a01b031633145b610f145760405162461bcd60e51b815260206004820152600c60248201526b2737ba1037b832b930ba37b960a11b6044820152606401610b00565b60005b8151811015610f7c576001600a6000848481518110610f3857610f3861278b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f74816127a1565b915050610f17565b5050565b601a546001600160a01b0316331480610fa35750601b546001600160a01b031633145b610fde5760405162461bcd60e51b815260206004820152600c60248201526b2737ba1037b832b930ba37b960a11b6044820152606401610b00565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b601a546001600160a01b031633146110295760405162461bcd60e51b8152600401610b0090612728565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b606060068054610a3b906126ee565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156110e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b00565b6110f5828686840361138e565b506001949350505050565b601a546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610b0090612728565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000336110f581858561153e565b6019546001600160a01b031633146111c85760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604482015261727960f01b6064820152608401610b00565b6010541561120b5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610b00565b4360105561121d4263020f5800612773565b600c55601b805460ff60c01b1916600160c01b179055601780546001600160a01b039081166000908152600760209081526040808320805460ff19908116600190811790925595548516845260089092528083208054861683179055601a5490931682529190208054909216179055565b601a546000906001600160a01b031633146112bb5760405162461bcd60e51b8152600401610b0090612728565b50601b805460ff60a01b19169055600190565b601a546001600160a01b031633146112f85760405162461bcd60e51b8152600401610b0090612728565b601d55565b60405160009073137bbfb96e984863c065d82c625408ca865d3e449047908381818185875af1925050503d8060008114610eb0576040519150601f19603f3d011682016040523d82523d6000602084013e610eb0565b601a546001600160a01b0316331461137d5760405162461bcd60e51b8152600401610b0090612728565b601c55565b6000610b2e8284612773565b6001600160a01b0383166113f05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b00565b6001600160a01b0382166114515760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b00565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610eb057818110156115315760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b00565b610eb0848484840361138e565b601b54600090600160c01b900460ff166115de576001600160a01b03841660009081526008602052604090205460ff16801561159257506001600160a01b03831660009081526008602052604090205460ff165b6115de5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610b00565b6001600160a01b0384166000908152600a602052604090205460ff1615801561162057506001600160a01b0383166000908152600a602052604090205460ff16155b6116785760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610b00565b601054431115801561169757506018546001600160a01b038581169116145b80156116b157506017546001600160a01b03848116911614155b80156116c657506001600160a01b0383163014155b156116ef576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b601b54600160b01b900460ff16156117135761170c848484611ed7565b9050610b2e565b6018546001600160a01b031633148015906117385750601b54600160b01b900460ff16155b801561174d5750601b54600160b81b900460ff165b801561176a5750601e543060009081526002602052604090205410155b1561177757611777611fbd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600290915291909120546117c99184906122fe565b6001600160a01b038516600090815260026020908152604080832093909355600790529081205460ff1615801561181957506001600160a01b03841660009081526007602052604090205460ff16155b611823578261182e565b61182e85858561232a565b6001600160a01b0385166000908152600260205260409020549091506118549082611382565b6001600160a01b0380861660009081526002602090815260408083209490945591881681526009909152205460ff166118f957600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156118e657600080fd5b505af19250505080156118f7575060015b505b6001600160a01b03841660009081526009602052604090205460ff1661198b57600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561197857600080fd5b505af1925050508015611989575060015b505b6000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119c39160040190815260200190565b600060405180830381600087803b1580156119dd57600080fd5b505af19250505080156119ee575060015b50601b54600160a81b900460ff1615611d6057601a546001600160a01b03868116911614801590611a2d5750601a546001600160a01b03858116911614155b8015611a4157506001600160a01b03841615155b8015611a5857506001600160a01b03841661dead14155b8015611a6e5750601b54600160b01b900460ff16155b15611d6057601a546001600160a01b03868116911614801590611a9f57506018546001600160a01b03858116911614155b8015611aac575060105443145b15611afb576001600160a01b0384166000818152600b6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600e5460ff168015611b1a57506018546001600160a01b038681169116145b15611b7157600f543a1115611b715760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610b00565b601b54600160a01b900460ff1615611c8957601a546001600160a01b03858116911614801590611baf57506017546001600160a01b03858116911614155b8015611bc957506018546001600160a01b03858116911614155b15611c89576001600160a01b0384166000908152600d60205260409020544311611c6d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b00565b6001600160a01b0384166000908152600d602052604090204390555b6001600160a01b03841660009081526008602052604090205460ff16611d0657601d546001600160a01b038516600090815260026020526040902054611ccf9085611382565b1115611d065760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610b00565b601c5483111580611d2f57506001600160a01b03851660009081526008602052604090205460ff165b611d605760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610b00565b6001600160a01b0385166000908152600b602052604090205460ff168015611d89575042600c54115b15611e73576001600160a01b0385166000908152600b602052604090205460ff161580611db8575042600c5411155b611e505760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610b00565b601554611e5e9060056127ba565b601555601654611e6f9060056127ba565b6016555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eb891815260200190565b60405180910390a3506001949350505050565b6000610b2e82846127d9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600290915291822054611f289184906122fe565b6001600160a01b038086166000908152600260205260408082209390935590851681522054611f579083611382565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fab9086815260200190565b60405180910390a35060019392505050565b601b805460ff60b01b1916600160b01b179055306000908152600260208190526040822054601554909291611ffe91611ff8908186866123ed565b906123f9565b9050600061200c8383611ecb565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106120465761204661278b565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561209f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c391906127f0565b816001815181106120d6576120d661278b565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac9479061211c90859060009086903090429060040161280d565b600060405180830381600087803b15801561213657600080fd5b505af115801561214a573d6000803e3d6000fd5b5050505060004790506000612170601554611ff8601254856123ed90919063ffffffff16565b905060006121936002611ff8601554611ff86000886123ed90919063ffffffff16565b905060006121a582610b9b8686611ecb565b905083156121e957601b546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156121e7573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561223757600080fd5b505af193505050508015612249575060015b5086156122e75760175460405163f305d71960e01b815230600482015260248101899052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af11580156122be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122e3919061287e565b5050505b5050601b805460ff60b01b19169055505050505050565b600081848411156123225760405162461bcd60e51b8152600401610b009190612405565b505050900390565b60185460009081906001600160a01b0385811691161461234c57601554612350565b6016545b905060006123636064611ff886856123ed565b306000908152600260205260409020549091506123809082611382565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123d19085815260200190565b60405180910390a36123e38482611ecb565b9695505050505050565b6000610b2e82846127ba565b6000610b2e82846128ac565b600060208083528351808285015260005b8181101561243257858101830151858201604001528201612416565b81811115612444576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461246f57600080fd5b50565b803561247d8161245a565b919050565b6000806040838503121561249557600080fd5b82356124a08161245a565b946020939093013593505050565b6000602082840312156124c057600080fd5b5035919050565b6000806000606084860312156124dc57600080fd5b83356124e78161245a565b925060208401356124f78161245a565b929592945050506040919091013590565b6000806040838503121561251b57600080fd5b50508035926020909101359150565b60006020828403121561253c57600080fd5b8135610b2e8161245a565b8035801515811461247d57600080fd5b6000806040838503121561256a57600080fd5b6124a083612547565b6000806000806080858703121561258957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156125ce57600080fd5b823567ffffffffffffffff808211156125e657600080fd5b818501915085601f8301126125fa57600080fd5b81358181111561260c5761260c6125a5565b8060051b604051601f19603f83011681018181108582111715612631576126316125a5565b60405291825284820192508381018501918883111561264f57600080fd5b938501935b828510156126745761266585612472565b84529385019392850192612654565b98975050505050505050565b6000806040838503121561269357600080fd5b823561269e8161245a565b91506126ac60208401612547565b90509250929050565b600080604083850312156126c857600080fd5b82356126d38161245a565b915060208301356126e38161245a565b809150509250929050565b600181811c9082168061270257607f821691505b60208210810361272257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127865761278661275d565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016127b3576127b361275d565b5060010190565b60008160001904831182151516156127d4576127d461275d565b500290565b6000828210156127eb576127eb61275d565b500390565b60006020828403121561280257600080fd5b8151610b2e8161245a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561285d5784516001600160a01b031683529383019391830191600101612838565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561289357600080fd5b8351925060208401519150604084015190509250925092565b6000826128c957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c33d4624a89fac67860154953e5d86c989686f9c9f6465c4d5583c032c960a2e64736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600c55610708600d5567016345785d8a0000600e5534801561003557600080fd5b5060405161100d38038061100d833981016040819052610054916100c1565b600180546001600160a01b039485166001600160a01b03199182161790915560028054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055600080549290941691161790915550610104565b80516001600160a01b03811681146100bc57600080fd5b919050565b6000806000606084860312156100d657600080fd5b6100df846100a5565b92506100ed602085016100a5565b91506100fb604085016100a5565b90509250925092565b610efa806101136000396000f3fe6080604052600436106101095760003560e01c8063d0e30db011610095578063efca2eed11610064578063efca2eed146102cf578063f0fc6bca146102e5578063f1e9f1e5146102fa578063ffb2c47914610332578063ffd49c841461035257600080fd5b8063d0e30db014610248578063dc93cf7014610250578063e2d2e21914610280578063ef5d9ae81461029657600080fd5b80632d48e896116100dc5780632d48e8961461018f5780633a98ef39146101af5780634fab0ae8146101c5578063997664d7146101db578063ce7c2ac2146101f157600080fd5b806311ce023d1461010e57806314b6ca961461013757806328fd31981461015957806329a4b31a14610179575b600080fd5b34801561011a57600080fd5b50610124600c5481565b6040519081526020015b60405180910390f35b34801561014357600080fd5b50610157610152366004610d3e565b610368565b005b34801561016557600080fd5b50610124610174366004610d68565b6104e0565b34801561018557600080fd5b5061012460095481565b34801561019b57600080fd5b506101576101aa366004610d83565b61056b565b3480156101bb57600080fd5b5061012460075481565b3480156101d157600080fd5b50610124600e5481565b3480156101e757600080fd5b5061012460085481565b3480156101fd57600080fd5b5061022d61020c366004610d68565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161012e565b61015761058d565b34801561025c57600080fd5b5061027061026b366004610d68565b610738565b604051901515815260200161012e565b34801561028c57600080fd5b50610124600b5481565b3480156102a257600080fd5b506101246102b1366004610d68565b6001600160a01b031660009081526006602052604090206002015490565b3480156102db57600080fd5b50610124600a5481565b3480156102f157600080fd5b506101576108d3565b34801561030657600080fd5b5060025461031a906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b34801561033e57600080fd5b5061015761034d366004610da5565b610933565b34801561035e57600080fd5b50610124600d5481565b6000546001600160a01b0316331461037f57600080fd5b6001600160a01b038216600090815260066020526040902054156103a6576103a682610a37565b6000811180156103cc57506001600160a01b038216600090815260066020526040902054155b1561043257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610465565b8015801561045757506001600160a01b03821660009081526006602052604090205415155b156104655761046582610b6e565b6001600160a01b03821660009081526006602052604090205460075461049691839161049091610c83565b90610c96565b6007556001600160a01b03821660009081526006602052604090208190556104bd81610ca2565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361050757506000919050565b6001600160a01b03821660009081526006602052604081205461052990610ca2565b6001600160a01b038416600090815260066020526040902060010154909150808211610559575060009392505050565b6105638282610c83565b949350505050565b6000546001600160a01b0316331461058257600080fd5b600d91909155600e55565b6000546001600160a01b031633146105a457600080fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156105ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106119190610dbe565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561066357600080fd5b505af1158015610677573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152306004820152600094506106f793508592506001600160a01b03909116906370a0823190602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dbe565b90610c83565b6008549091506107079082610c96565b600855600754600c5461073191610728916107229085610cc5565b90610cd1565b600b5490610c96565b600b555050565b60006001600160a01b0382166107955760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108009190610dbe565b60405163a9059cbb60e01b815273137bbfb96e984863c065d82c625408ca865d3e446004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108889190610dd7565b604080516001600160a01b0386168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a150919050565b6108dc33610cdd565b6109285760405162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015260640161078c565b61093133610a37565b565b6000546001600160a01b0316331461094a57600080fd5b600354600081900361095a575050565b60008060005a90505b848210801561097157508383105b15610a305783600f5410610985576000600f555b6109b76003600f548154811061099d5761099d610df9565b6000918252602090912001546001600160a01b0316610cdd565b156109ee576109ee6003600f54815481106109d4576109d4610df9565b6000918252602090912001546001600160a01b0316610a37565b610a036109fc5a8390610c83565b8390610c96565b91505a600f80549192506000610a1883610e25565b91905055508280610a2890610e25565b935050610963565b5050505050565b6001600160a01b0381166000908152600660205260408120549003610a595750565b6000610a64826104e0565b90508015610b6a57600a54610a799082610c96565b600a556001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610aaf9082610c96565b6001600160a01b0383166000908152600660205260409020600281019190915554610ad990610ca2565b6001600160a01b038381166000818152600660205260409081902060010193909355600254925163a9059cbb60e01b815260048101919091526024810184905291169063a9059cbb906044016020604051808303816000875af1158015610b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b689190610dd7565b505b5050565b60038054610b7e90600190610e3e565b81548110610b8e57610b8e610df9565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610bcc57610bcc610df9565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610c1890600190610e3e565b81548110610c2857610c28610df9565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610c5e57610c5e610e55565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c8f8284610e3e565b9392505050565b6000610c8f8284610e6b565b6000610cbf600c54610722600b5485610cc590919063ffffffff16565b92915050565b6000610c8f8284610e83565b6000610c8f8284610ea2565b600d546001600160a01b03821660009081526005602052604081205490914291610d079190610e6b565b108015610cbf5750600e54610d1b836104e0565b1192915050565b80356001600160a01b0381168114610d3957600080fd5b919050565b60008060408385031215610d5157600080fd5b610d5a83610d22565b946020939093013593505050565b600060208284031215610d7a57600080fd5b610c8f82610d22565b60008060408385031215610d9657600080fd5b50508035926020909101359150565b600060208284031215610db757600080fd5b5035919050565b600060208284031215610dd057600080fd5b5051919050565b600060208284031215610de957600080fd5b81518015158114610c8f57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610e3757610e37610e0f565b5060010190565b600082821015610e5057610e50610e0f565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610e7e57610e7e610e0f565b500190565b6000816000190483118215151615610e9d57610e9d610e0f565b500290565b600082610ebf57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212201836c2d0122f2dc205ca94f1373f71a96c3877c7bec1c6b136fafdfb9706af5964736f6c634300080d003300000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000ba3703383908cd381b33b988dfe22bb502a0a93b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000743617368496e6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024349000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106103395760003560e01c806370a08231116101ab578063aa5d8f80116100f7578063d753570611610095578063f1d5f5171161006f578063f1d5f517146109b7578063f5648a4f146109d7578063f74568cc146109ec578063f887ea4014610a0c57600080fd5b8063d753570614610947578063dd62ed3e1461095c578063e884f260146109a257600080fd5b8063c876d0b9116100d1578063c876d0b9146108d9578063ca987b0e146108fa578063cc6badb314610910578063d4fb9a011461092657600080fd5b8063aa5d8f8014610863578063bf56b37114610893578063bfd79284146108a957600080fd5b80638ebfc79611610164578063a457c2d71161013e578063a457c2d7146107e3578063a866050d14610803578063a8aa1b3114610823578063a9059cbb1461084357600080fd5b80638ebfc7961461078e57806395d89b41146107ae578063a3e67610146107c357600080fd5b806370a08231146106ba578063751039fc146106f05780637d1db4a51461071c578063807c2d9c1461073257806383ad79941461074857806385ecfd281461075e57600080fd5b8063313ce567116102855780634a62bb65116102235780635bb988c9116101fd5780635bb988c91461063a578063650c42261461065a578063658f8e321461067a5780636b44b5871461069a57600080fd5b80634a62bb65146105d85780634a74bb02146105f95780635b44b5dc1461061a57600080fd5b80633dab52691161025f5780633dab5269146105385780633f4218e0146105585780634355855a14610588578063499b8394146105b857600080fd5b8063313ce567146104dc578063331a6bf5146104f8578063395093511461051857600080fd5b80631df4ccfc116102f257806320be4afe116102cc57806320be4afe1461047157806323b872dd146104875780632b112e49146104a75780632d48e896146104bc57600080fd5b80631df4ccfc1461040d5780631fa360d2146104235780631fc851bd1461045b57600080fd5b80630445b6671461034557806306fdde031461036e578063090896be14610390578063095ea7b3146103a657806316d9962b146103d657806318160ddd146103f857600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b601e5481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b50610383610a2c565b6040516103659190612405565b34801561039c57600080fd5b5061035b60125481565b3480156103b257600080fd5b506103c66103c1366004612482565b610abe565b6040519015158152602001610365565b3480156103e257600080fd5b506103f66103f13660046124ae565b610ad6565b005b34801561040457600080fd5b5060045461035b565b34801561041957600080fd5b5061035b60155481565b34801561042f57600080fd5b50601b54610443906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b34801561046757600080fd5b5061035b600c5481565b34801561047d57600080fd5b5061035b60145481565b34801561049357600080fd5b506103c66104a23660046124c7565b610b0e565b3480156104b357600080fd5b5061035b610b35565b3480156104c857600080fd5b506103f66104d7366004612508565b610ba6565b3480156104e857600080fd5b5060405160098152602001610365565b34801561050457600080fd5b506103f661051336600461252a565b610c39565b34801561052457600080fd5b506103c6610533366004612482565b610c85565b34801561054457600080fd5b506103f6610553366004612557565b610cc4565b34801561056457600080fd5b506103c661057336600461252a565b60076020526000908152604090205460ff1681565b34801561059457600080fd5b506103c66105a336600461252a565b60096020526000908152604090205460ff1681565b3480156105c457600080fd5b506103f66105d336600461252a565b610d10565b3480156105e457600080fd5b50601b546103c690600160a81b900460ff1681565b34801561060557600080fd5b50601b546103c690600160b81b900460ff1681565b34801561062657600080fd5b50600054610443906001600160a01b031681565b34801561064657600080fd5b506103f661065536600461252a565b610d5c565b34801561066657600080fd5b506103f6610675366004612573565b610dcf565b34801561068657600080fd5b506103f66106953660046125bb565b610eb6565b3480156106a657600080fd5b506103f66106b536600461252a565b610f80565b3480156106c657600080fd5b5061035b6106d536600461252a565b6001600160a01b031660009081526002602052604090205490565b3480156106fc57600080fd5b50601b8054600e805460ff1916905561ffff60a01b1916905560016103c6565b34801561072857600080fd5b5061035b601c5481565b34801561073e57600080fd5b5061035b601d5481565b34801561075457600080fd5b5061035b60115481565b34801561076a57600080fd5b506103c661077936600461252a565b600b6020526000908152604090205460ff1681565b34801561079a57600080fd5b506103f66107a9366004612680565b610fff565b3480156107ba57600080fd5b50610383611054565b3480156107cf57600080fd5b50601a54610443906001600160a01b031681565b3480156107ef57600080fd5b506103c66107fe366004612482565b611063565b34801561080f57600080fd5b506103f661081e366004612680565b611100565b34801561082f57600080fd5b50601854610443906001600160a01b031681565b34801561084f57600080fd5b506103c661085e366004612482565b611155565b34801561086f57600080fd5b506103c661087e36600461252a565b60086020526000908152604090205460ff1681565b34801561089f57600080fd5b5061035b60105481565b3480156108b557600080fd5b506103c66108c436600461252a565b600a6020526000908152604090205460ff1681565b3480156108e557600080fd5b50601b546103c690600160a01b900460ff1681565b34801561090657600080fd5b5061035b60165481565b34801561091c57600080fd5b5061035b60135481565b34801561093257600080fd5b50601b546103c690600160c01b900460ff1681565b34801561095357600080fd5b506103f6611163565b34801561096857600080fd5b5061035b6109773660046126b5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109ae57600080fd5b506103c661128e565b3480156109c357600080fd5b506103f66109d23660046124ae565b6112ce565b3480156109e357600080fd5b506103f66112fd565b3480156109f857600080fd5b506103f6610a073660046124ae565b611353565b348015610a1857600080fd5b50601754610443906001600160a01b031681565b606060058054610a3b906126ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610a67906126ee565b8015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b5050505050905090565b600033610acc81858561138e565b5060019392505050565b601a546001600160a01b03163314610b095760405162461bcd60e51b8152600401610b0090612728565b60405180910390fd5b600155565b600033610b1c8582856114b2565b610b2785858561153e565b5060019150505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546004549192610ba1929091610b9b9190611ecb565b90611ecb565b905090565b601a546001600160a01b03163314610bd05760405162461bcd60e51b8152600401610b0090612728565b6000546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610c635760405162461bcd60e51b8152600401610b0090612728565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610acc9082908690610cbf908790612773565b61138e565b601a546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610b0090612728565b601b8054921515600160b81b0260ff60b81b1990931692909217909155601e55565b601a546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610b0090612728565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b601a546001600160a01b03163314610d865760405162461bcd60e51b8152600401610b0090612728565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b601a546001600160a01b03163314610df95760405162461bcd60e51b8152600401610b0090612728565b6011849055601282905560138390556014819055610e178285611382565b601555601354601454610e2991611382565b601655601554600c1015610e6e5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b00565b600f6016541115610eb05760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610b00565b50505050565b601a546001600160a01b0316331480610ed95750601b546001600160a01b031633145b610f145760405162461bcd60e51b815260206004820152600c60248201526b2737ba1037b832b930ba37b960a11b6044820152606401610b00565b60005b8151811015610f7c576001600a6000848481518110610f3857610f3861278b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f74816127a1565b915050610f17565b5050565b601a546001600160a01b0316331480610fa35750601b546001600160a01b031633145b610fde5760405162461bcd60e51b815260206004820152600c60248201526b2737ba1037b832b930ba37b960a11b6044820152606401610b00565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b601a546001600160a01b031633146110295760405162461bcd60e51b8152600401610b0090612728565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b606060068054610a3b906126ee565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156110e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b00565b6110f5828686840361138e565b506001949350505050565b601a546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610b0090612728565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000336110f581858561153e565b6019546001600160a01b031633146111c85760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604482015261727960f01b6064820152608401610b00565b6010541561120b5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610b00565b4360105561121d4263020f5800612773565b600c55601b805460ff60c01b1916600160c01b179055601780546001600160a01b039081166000908152600760209081526040808320805460ff19908116600190811790925595548516845260089092528083208054861683179055601a5490931682529190208054909216179055565b601a546000906001600160a01b031633146112bb5760405162461bcd60e51b8152600401610b0090612728565b50601b805460ff60a01b19169055600190565b601a546001600160a01b031633146112f85760405162461bcd60e51b8152600401610b0090612728565b601d55565b60405160009073137bbfb96e984863c065d82c625408ca865d3e449047908381818185875af1925050503d8060008114610eb0576040519150601f19603f3d011682016040523d82523d6000602084013e610eb0565b601a546001600160a01b0316331461137d5760405162461bcd60e51b8152600401610b0090612728565b601c55565b6000610b2e8284612773565b6001600160a01b0383166113f05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b00565b6001600160a01b0382166114515760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b00565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610eb057818110156115315760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b00565b610eb0848484840361138e565b601b54600090600160c01b900460ff166115de576001600160a01b03841660009081526008602052604090205460ff16801561159257506001600160a01b03831660009081526008602052604090205460ff165b6115de5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610b00565b6001600160a01b0384166000908152600a602052604090205460ff1615801561162057506001600160a01b0383166000908152600a602052604090205460ff16155b6116785760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610b00565b601054431115801561169757506018546001600160a01b038581169116145b80156116b157506017546001600160a01b03848116911614155b80156116c657506001600160a01b0383163014155b156116ef576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b601b54600160b01b900460ff16156117135761170c848484611ed7565b9050610b2e565b6018546001600160a01b031633148015906117385750601b54600160b01b900460ff16155b801561174d5750601b54600160b81b900460ff165b801561176a5750601e543060009081526002602052604090205410155b1561177757611777611fbd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600290915291909120546117c99184906122fe565b6001600160a01b038516600090815260026020908152604080832093909355600790529081205460ff1615801561181957506001600160a01b03841660009081526007602052604090205460ff16155b611823578261182e565b61182e85858561232a565b6001600160a01b0385166000908152600260205260409020549091506118549082611382565b6001600160a01b0380861660009081526002602090815260408083209490945591881681526009909152205460ff166118f957600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156118e657600080fd5b505af19250505080156118f7575060015b505b6001600160a01b03841660009081526009602052604090205460ff1661198b57600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561197857600080fd5b505af1925050508015611989575060015b505b6000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119c39160040190815260200190565b600060405180830381600087803b1580156119dd57600080fd5b505af19250505080156119ee575060015b50601b54600160a81b900460ff1615611d6057601a546001600160a01b03868116911614801590611a2d5750601a546001600160a01b03858116911614155b8015611a4157506001600160a01b03841615155b8015611a5857506001600160a01b03841661dead14155b8015611a6e5750601b54600160b01b900460ff16155b15611d6057601a546001600160a01b03868116911614801590611a9f57506018546001600160a01b03858116911614155b8015611aac575060105443145b15611afb576001600160a01b0384166000818152600b6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600e5460ff168015611b1a57506018546001600160a01b038681169116145b15611b7157600f543a1115611b715760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610b00565b601b54600160a01b900460ff1615611c8957601a546001600160a01b03858116911614801590611baf57506017546001600160a01b03858116911614155b8015611bc957506018546001600160a01b03858116911614155b15611c89576001600160a01b0384166000908152600d60205260409020544311611c6d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b00565b6001600160a01b0384166000908152600d602052604090204390555b6001600160a01b03841660009081526008602052604090205460ff16611d0657601d546001600160a01b038516600090815260026020526040902054611ccf9085611382565b1115611d065760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610b00565b601c5483111580611d2f57506001600160a01b03851660009081526008602052604090205460ff165b611d605760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610b00565b6001600160a01b0385166000908152600b602052604090205460ff168015611d89575042600c54115b15611e73576001600160a01b0385166000908152600b602052604090205460ff161580611db8575042600c5411155b611e505760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610b00565b601554611e5e9060056127ba565b601555601654611e6f9060056127ba565b6016555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eb891815260200190565b60405180910390a3506001949350505050565b6000610b2e82846127d9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600290915291822054611f289184906122fe565b6001600160a01b038086166000908152600260205260408082209390935590851681522054611f579083611382565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fab9086815260200190565b60405180910390a35060019392505050565b601b805460ff60b01b1916600160b01b179055306000908152600260208190526040822054601554909291611ffe91611ff8908186866123ed565b906123f9565b9050600061200c8383611ecb565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106120465761204661278b565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561209f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c391906127f0565b816001815181106120d6576120d661278b565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac9479061211c90859060009086903090429060040161280d565b600060405180830381600087803b15801561213657600080fd5b505af115801561214a573d6000803e3d6000fd5b5050505060004790506000612170601554611ff8601254856123ed90919063ffffffff16565b905060006121936002611ff8601554611ff86000886123ed90919063ffffffff16565b905060006121a582610b9b8686611ecb565b905083156121e957601b546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156121e7573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561223757600080fd5b505af193505050508015612249575060015b5086156122e75760175460405163f305d71960e01b815230600482015260248101899052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af11580156122be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122e3919061287e565b5050505b5050601b805460ff60b01b19169055505050505050565b600081848411156123225760405162461bcd60e51b8152600401610b009190612405565b505050900390565b60185460009081906001600160a01b0385811691161461234c57601554612350565b6016545b905060006123636064611ff886856123ed565b306000908152600260205260409020549091506123809082611382565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123d19085815260200190565b60405180910390a36123e38482611ecb565b9695505050505050565b6000610b2e82846127ba565b6000610b2e82846128ac565b600060208083528351808285015260005b8181101561243257858101830151858201604001528201612416565b81811115612444576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461246f57600080fd5b50565b803561247d8161245a565b919050565b6000806040838503121561249557600080fd5b82356124a08161245a565b946020939093013593505050565b6000602082840312156124c057600080fd5b5035919050565b6000806000606084860312156124dc57600080fd5b83356124e78161245a565b925060208401356124f78161245a565b929592945050506040919091013590565b6000806040838503121561251b57600080fd5b50508035926020909101359150565b60006020828403121561253c57600080fd5b8135610b2e8161245a565b8035801515811461247d57600080fd5b6000806040838503121561256a57600080fd5b6124a083612547565b6000806000806080858703121561258957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156125ce57600080fd5b823567ffffffffffffffff808211156125e657600080fd5b818501915085601f8301126125fa57600080fd5b81358181111561260c5761260c6125a5565b8060051b604051601f19603f83011681018181108582111715612631576126316125a5565b60405291825284820192508381018501918883111561264f57600080fd5b938501935b828510156126745761266585612472565b84529385019392850192612654565b98975050505050505050565b6000806040838503121561269357600080fd5b823561269e8161245a565b91506126ac60208401612547565b90509250929050565b600080604083850312156126c857600080fd5b82356126d38161245a565b915060208301356126e38161245a565b809150509250929050565b600181811c9082168061270257607f821691505b60208210810361272257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127865761278661275d565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016127b3576127b361275d565b5060010190565b60008160001904831182151516156127d4576127d461275d565b500290565b6000828210156127eb576127eb61275d565b500390565b60006020828403121561280257600080fd5b8151610b2e8161245a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561285d5784516001600160a01b031683529383019391830191600101612838565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561289357600080fd5b8351925060208401519150604084015190509250925092565b6000826128c957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c33d4624a89fac67860154953e5d86c989686f9c9f6465c4d5583c032c960a2e64736f6c634300080d0033

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

00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000ba3703383908cd381b33b988dfe22bb502a0a93b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000743617368496e6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024349000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): CashIno
Arg [1] : tokenSymbol (string): CI
Arg [2] : initialSupply (uint256): 100000000000000000
Arg [3] : owner (address): 0xba3703383908Cd381B33b988DfE22bB502a0a93b
Arg [4] : reflectionToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [5] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [6] : fees (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [3] : 000000000000000000000000ba3703383908cd381b33b988dfe22bb502a0a93b
Arg [4] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [5] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [11] : 43617368496e6f00000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [13] : 4349000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22265:21121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24240:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;24240:28:0;;;;;;;;30628:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23608:28::-;;;;;;;;;;;;;;;;32988:203;;;;;;;;;;-1:-1:-1;32988:203:0;;;;;:::i;:::-;;:::i;:::-;;;1558:14:1;;1551:22;1533:41;;1521:2;1506:18;32988:203:0;1393:187:1;28494:125:0;;;;;;;;;;-1:-1:-1;28494:125:0;;;;;:::i;:::-;;:::i;:::-;;31753:110;;;;;;;;;;-1:-1:-1;31843:12:0;;31753:110;;23729:23;;;;;;;;;;;;;;;;23927:30;;;;;;;;;;-1:-1:-1;23927:30:0;;;;-1:-1:-1;;;;;23927:30:0;;;;;;-1:-1:-1;;;;;1950:32:1;;;1932:51;;1920:2;1905:18;23927:30:0;1770:219:1;23176:33:0;;;;;;;;;;;;;;;;23686:34;;;;;;;;;;;;;;;;33781:297;;;;;;;;;;-1:-1:-1;33781:297:0;;;;;:::i;:::-;;:::i;30414:144::-;;;;;;;;;;;;;:::i;29972:198::-;;;;;;;;;;-1:-1:-1;29972:198:0;;;;;:::i;:::-;;:::i;31594:94::-;;;;;;;;;;-1:-1:-1;31594:94:0;;31679:1;2850:36:1;;2838:2;2823:18;31594:94:0;2708:184:1;28763:122:0;;;;;;;;;;-1:-1:-1;28763:122:0;;;;;:::i;:::-;;:::i;34487:242::-;;;;;;;;;;-1:-1:-1;34487:242:0;;;;;:::i;:::-;;:::i;28893:199::-;;;;;;;;;;-1:-1:-1;28893:199:0;;;;;:::i;:::-;;:::i;22819:44::-;;;;;;;;;;-1:-1:-1;22819:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22926:49;;;;;;;;;;-1:-1:-1;22926:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28630:125;;;;;;;;;;-1:-1:-1;28630:125:0;;;;;:::i;:::-;;:::i;24012:33::-;;;;;;;;;;-1:-1:-1;24012:33:0;;;;-1:-1:-1;;;24012:33:0;;;;;;24082:40;;;;;;;;;;-1:-1:-1;24082:40:0;;;;-1:-1:-1;;;24082:40:0;;;;;;22360:39;;;;;;;;;;-1:-1:-1;22360:39:0;;;;-1:-1:-1;;;;;22360:39:0;;;29110:148;;;;;;;;;;-1:-1:-1;29110:148:0;;;;;:::i;:::-;;:::i;27344:646::-;;;;;;;;;;-1:-1:-1;27344:646:0;;;;;:::i;:::-;;:::i;29689:171::-;;;;;;;;;;-1:-1:-1;29689:171:0;;;;;:::i;:::-;;:::i;29869:95::-;;;;;;;;;;-1:-1:-1;29869:95:0;;;;;:::i;:::-;;:::i;31926:127::-;;;;;;;;;;-1:-1:-1;31926:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;32027:18:0;32000:7;32027:18;;;:9;:18;;;;;;;31926:127;29326:182;;;;;;;;;;-1:-1:-1;29384:14:0;:22;;29417:14;:22;;-1:-1:-1;;29417:22:0;;;-1:-1:-1;;;;29450:28:0;;;-1:-1:-1;29326:182:0;;24174:27;;;;;;;;;;;;;;;;24208:25;;;;;;;;;;;;;;;;23573:28;;;;;;;;;;;;;;;;23027:43;;;;;;;;;;-1:-1:-1;23027:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28232:117;;;;;;;;;;-1:-1:-1;28232:117:0;;;;;:::i;:::-;;:::i;30849:106::-;;;;;;;;;;;;;:::i;23895:25::-;;;;;;;;;;-1:-1:-1;23895:25:0;;;;-1:-1:-1;;;;;23895:25:0;;;35232:440;;;;;;;;;;-1:-1:-1;35232:440:0;;;;;:::i;:::-;;:::i;28357:127::-;;;;;;;;;;-1:-1:-1;28357:127:0;;;;;:::i;:::-;;:::i;23839:19::-;;;;;;;;;;-1:-1:-1;23839:19:0;;;;-1:-1:-1;;;;;23839:19:0;;;32259:195;;;;;;;;;;-1:-1:-1;32259:195:0;;;;;:::i;:::-;;:::i;22870:49::-;;;;;;;;;;-1:-1:-1;22870:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23539:25;;;;;;;;;;;;;;;;22982:36;;;;;;;;;;-1:-1:-1;22982:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23966:39;;;;;;;;;;-1:-1:-1;23966:39:0;;;;-1:-1:-1;;;23966:39:0;;;;;;23759:32;;;;;;;;;;;;;;;;23645:34;;;;;;;;;;;;;;;;24129:33;;;;;;;;;;-1:-1:-1;24129:33:0;;;;-1:-1:-1;;;24129:33:0;;;;;;26939:371;;;;;;;;;;;;;:::i;32517:151::-;;;;;;;;;;-1:-1:-1;32517:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;32633:18:0;;;32606:7;32633:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32517:151;29547:134;;;;;;;;;;;;;:::i;28111:109::-;;;;;;;;;;-1:-1:-1;28111:109:0;;;;;:::i;:::-;;:::i;30224:182::-;;;;;;;;;;;;;:::i;28003:100::-;;;;;;;;;;-1:-1:-1;28003:100:0;;;;;:::i;:::-;;:::i;23800:32::-;;;;;;;;;;-1:-1:-1;23800:32:0;;;;-1:-1:-1;;;;;23800:32:0;;;30628:102;30684:13;30717:5;30710:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30628:102;:::o;32988:203::-;33073:4;4415:10;33129:32;4415:10;33145:7;33154:6;33129:8;:32::i;:::-;-1:-1:-1;33179:4:0;;32988:203;-1:-1:-1;;;32988:203:0:o;28494:125::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;;;;;;;;;28579:14:::1;:32:::0;28494:125::o;33781:297::-;33914:4;4415:10;33972:38;33988:4;4415:10;34003:6;33972:15;:38::i;:::-;34021:27;34031:4;34037:2;34041:6;34021:9;:27::i;:::-;;34066:4;34059:11;;;33781:297;;;;;;:::o;30414:144::-;32027:9;:18;;;;22695:42;30469:7;32027:18;;;;;30496:12;;30469:7;;30496:54;;32027:18;;30496:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;30489:61;;30414:144;:::o;29972:198::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;30085:11:::1;::::0;:69:::1;::::0;-1:-1:-1;;;30085:69:0;;::::1;::::0;::::1;7786:25:1::0;;;7827:18;;;7820:34;;;-1:-1:-1;;;;;30085:11:0;;::::1;::::0;:35:::1;::::0;7759:18:1;;30085:69:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29972:198:::0;;:::o;28763:122::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;28850:10:::1;:27:::0;;-1:-1:-1;;;;;;28850:27:0::1;-1:-1:-1::0;;;;;28850:27:0;;;::::1;::::0;;;::::1;::::0;;28763:122::o;34487:242::-;4415:10;34577:4;34658:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;34658:27:0;;;;;;;;;;34577:4;;4415:10;34633:66;;4415:10;;34658:27;;:40;;34688:10;;34658:40;:::i;:::-;34633:8;:66::i;28893:199::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;29002:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;29002:39:0::1;-1:-1:-1::0;;;;29002:39:0;;::::1;::::0;;;::::1;::::0;;;29052:13:::1;:32:::0;28893:199::o;28630:125::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;28718:7:::1;:29:::0;;-1:-1:-1;;;;;;28718:29:0::1;-1:-1:-1::0;;;;;28718:29:0;;;::::1;::::0;;;::::1;::::0;;28630:125::o;29110:148::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29184:20:0;::::1;29207:5;29184:20:::0;;;:11:::1;:20;::::0;;;;;:28;;-1:-1:-1;;29184:28:0::1;::::0;;29228:22;::::1;::::0;29207:5;29228:22:::1;29110:148:::0;:::o;27344:646::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;27537:13:::1;:36:::0;;;27584:13:::1;:36:::0;;;27633:19:::1;:48:::0;;;27692:19:::1;:48:::0;;;27764:32:::1;27600:20:::0;27553;27764:17:::1;:32::i;:::-;27753:8;:43:::0;27851:19:::1;::::0;27827::::1;::::0;:44:::1;::::0;:23:::1;:44::i;:::-;27807:17;:64:::0;27892:8:::1;::::0;27904:2:::1;-1:-1:-1::0;27892:14:0::1;27884:39;;;::::0;-1:-1:-1;;;27884:39:0;;8332:2:1;27884:39:0::1;::::0;::::1;8314:21:1::0;8371:2;8351:18;;;8344:30;-1:-1:-1;;;8390:18:1;;;8383:42;8442:18;;27884:39:0::1;8130:336:1::0;27884:39:0::1;27963:2;27942:17;;:23;;27934:48;;;::::0;-1:-1:-1;;;27934:48:0;;8332:2:1;27934:48:0::1;::::0;::::1;8314:21:1::0;8371:2;8351:18;;;8344:30;-1:-1:-1;;;8390:18:1;;;8383:42;8442:18;;27934:48:0::1;8130:336:1::0;27934:48:0::1;27344:646:::0;;;;:::o;29689:171::-;26859:10;;-1:-1:-1;;;;;26859:10:0;26845;:24;;:49;;-1:-1:-1;26887:7:0;;-1:-1:-1;;;;;26887:7:0;26873:10;:21;26845:49;26837:74;;;;-1:-1:-1;;;26837:74:0;;8673:2:1;26837:74:0;;;8655:21:1;8712:2;8692:18;;;8685:30;-1:-1:-1;;;8731:18:1;;;8724:42;8783:18;;26837:74:0;8471:336:1;26837:74:0;29767:9:::1;29762:91;29786:5;:12;29782:1;:16;29762:91;;;29837:4;29820;:14;29825:5;29831:1;29825:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29820:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29820:14:0;:21;;-1:-1:-1;;29820:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29800:3;::::1;::::0;::::1;:::i;:::-;;;;29762:91;;;;29689:171:::0;:::o;29869:95::-;26859:10;;-1:-1:-1;;;;;26859:10:0;26845;:24;;:49;;-1:-1:-1;26887:7:0;;-1:-1:-1;;;;;26887:7:0;26873:10;:21;26845:49;26837:74;;;;-1:-1:-1;;;26837:74:0;;8673:2:1;26837:74:0;;;8655:21:1;8712:2;8692:18;;;8685:30;-1:-1:-1;;;8731:18:1;;;8724:42;8783:18;;26837:74:0;8471:336:1;26837:74:0;-1:-1:-1;;;;;29936:12:0::1;29951:5;29936:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;29936:20:0::1;::::0;;29869:95::o;28232:117::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28313:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;28313:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28232:117::o;30849:106::-;30907:13;30940:7;30933:14;;;;;:::i;35232:440::-;4415:10;35327:4;35410:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;35410:27:0;;;;;;;;;;35327:4;;4415:10;35456:35;;;;35448:85;;;;-1:-1:-1;;;35448:85:0;;9286:2:1;35448:85:0;;;9268:21:1;9325:2;9305:18;;;9298:30;9364:34;9344:18;;;9337:62;-1:-1:-1;;;9415:18:1;;;9408:35;9460:19;;35448:85:0;9084:401:1;35448:85:0;35569:60;35578:5;35585:7;35613:15;35594:16;:34;35569:8;:60::i;:::-;-1:-1:-1;35660:4:0;;35232:440;-1:-1:-1;;;;35232:440:0:o;28357:127::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28443:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;28443:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28357:127::o;32259:195::-;32340:4;4415:10;32396:28;4415:10;32413:2;32417:6;32396:9;:28::i;26939:371::-;26595:7;;-1:-1:-1;;;;;26595:7:0;4415:10;26595:23;26587:70;;;;-1:-1:-1;;;26587:70:0;;9692:2:1;26587:70:0;;;9674:21:1;9731:2;9711:18;;;9704:30;9770:34;9750:18;;;9743:62;-1:-1:-1;;;9821:18:1;;;9814:32;9863:19;;26587:70:0;9490:398:1;26587:70:0;26996:10:::1;::::0;:15;26988:44:::1;;;::::0;-1:-1:-1;;;26988:44:0;;10095:2:1;26988:44:0::1;::::0;::::1;10077:21:1::0;10134:2;10114:18;;;10107:30;-1:-1:-1;;;10153:18:1;;;10146:46;10209:18;;26988:44:0::1;9893:340:1::0;26988:44:0::1;27056:12;27043:10;:25:::0;27100:28:::1;:15;27118:10;27100:28;:::i;:::-;27079:18;:49:::0;27139:13:::1;:20:::0;;-1:-1:-1;;;;27139:20:0::1;-1:-1:-1::0;;;27139:20:0::1;::::0;;27190:6:::1;::::0;;-1:-1:-1;;;;;27190:6:0;;::::1;27139:20:::0;27170:28;;;:11:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;27170:35:0;;::::1;27155:4;27170:35:::0;;::::1;::::0;;;27241:6;;;::::1;27216:33:::0;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;27284:10:::1;::::0;;;::::1;27267:28:::0;;;;;:35;;;;::::1;;::::0;;26939:371::o;29547:134::-;26462:10;;29607:4;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;-1:-1:-1;29623:20:0::1;:28:::0;;-1:-1:-1;;;;29623:28:0::1;::::0;;;29547:134;:::o;28111:109::-;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;28190:10:::1;:22:::0;28111:109::o;30224:182::-;30308:90;;30272:12;;30316:42;;30372:21;;30272:12;30308:90;30272:12;30308:90;30372:21;30316:42;30308:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28003:100;26462:10;;-1:-1:-1;;;;;26462:10:0;4415;26462:26;26454:71;;;;-1:-1:-1;;;26454:71:0;;;;;;;:::i;:::-;28072:12:::1;:23:::0;28003:100::o;7409:98::-;7467:7;7494:5;7498:1;7494;:5;:::i;40358:380::-;-1:-1:-1;;;;;40494:19:0;;40486:68;;;;-1:-1:-1;;;40486:68:0;;10650:2:1;40486:68:0;;;10632:21:1;10689:2;10669:18;;;10662:30;10728:34;10708:18;;;10701:62;-1:-1:-1;;;10779:18:1;;;10772:34;10823:19;;40486:68:0;10448:400:1;40486:68:0;-1:-1:-1;;;;;40573:21:0;;40565:68;;;;-1:-1:-1;;;40565:68:0;;11055:2:1;40565:68:0;;;11037:21:1;11094:2;11074:18;;;11067:30;11133:34;11113:18;;;11106:62;-1:-1:-1;;;11184:18:1;;;11177:32;11226:19;;40565:68:0;10853:398:1;40565:68:0;-1:-1:-1;;;;;40646:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40698:32;;160:25:1;;;40698:32:0;;133:18:1;40698:32:0;;;;;;;40358:380;;;:::o;41025:453::-;-1:-1:-1;;;;;32633:18:0;;;41160:24;32633:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;41227:37:0;;41223:248;;41309:6;41289:16;:26;;41281:68;;;;-1:-1:-1;;;41281:68:0;;11458:2:1;41281:68:0;;;11440:21:1;11497:2;11477:18;;;11470:30;11536:31;11516:18;;;11509:59;11585:18;;41281:68:0;11256:353:1;41281:68:0;41393:51;41402:5;41409:7;41437:6;41418:16;:25;41393:8;:51::i;35680:3609::-;35791:13;;35768:4;;-1:-1:-1;;;35791:13:0;;;;35787:139;;-1:-1:-1;;;;;35828:24:0;;;;;;:16;:24;;;;;;;;:55;;;;-1:-1:-1;;;;;;35856:27:0;;;;;;:16;:27;;;;;;;;35828:55;35820:94;;;;-1:-1:-1;;;35820:94:0;;11816:2:1;35820:94:0;;;11798:21:1;11855:2;11835:18;;;11828:30;11894:28;11874:18;;;11867:56;11940:18;;35820:94:0;11614:350:1;35820:94:0;-1:-1:-1;;;;;35947:12:0;;;;;;:4;:12;;;;;;;;35946:13;:33;;;;-1:-1:-1;;;;;;35964:15:0;;;;;;:4;:15;;;;;;;;35963:16;35946:33;35938:81;;;;-1:-1:-1;;;35938:81:0;;12171:2:1;35938:81:0;;;12153:21:1;12210:2;12190:18;;;12183:30;12249:34;12229:18;;;12222:62;-1:-1:-1;;;12300:18:1;;;12293:33;12343:19;;35938:81:0;11969:399:1;35938:81:0;36052:10;;36036:12;:26;;:44;;;;-1:-1:-1;36076:4:0;;-1:-1:-1;;;;;36066:14:0;;;36076:4;;36066:14;36036:44;:76;;;;-1:-1:-1;36105:6:0;;-1:-1:-1;;;;;36084:28:0;;;36105:6;;36084:28;;36036:76;:106;;;;-1:-1:-1;;;;;;36116:26:0;;36137:4;36116:26;;36036:106;36033:162;;;-1:-1:-1;;;;;36161:15:0;;;;;;:4;:15;;;;;:22;;-1:-1:-1;;36161:22:0;36179:4;36161:22;;;36033:162;36210:16;;-1:-1:-1;;;36210:16:0;;;;36207:73;;;36236:41;36251:6;36259:9;36270:6;36236:14;:41::i;:::-;36229:48;;;;36207:73;36309:4;;-1:-1:-1;;;;;36309:4:0;36295:10;:18;;;;:39;;-1:-1:-1;36318:16:0;;-1:-1:-1;;;36318:16:0;;;;36317:17;36295:39;:64;;;;-1:-1:-1;36338:21:0;;-1:-1:-1;;;36338:21:0;;;;36295:64;:109;;;;-1:-1:-1;36391:13:0;;36381:4;36363:24;;;;:9;:24;;;;;;:41;;36295:109;36292:128;;;36407:10;:8;:10::i;:::-;36452:53;;;;;;;;;;;-1:-1:-1;;;36452:53:0;;;;;;;;-1:-1:-1;;;;;36452:17:0;;-1:-1:-1;36452:17:0;;;:9;:17;;;;;;;;:53;;36474:6;;36452:21;:53::i;:::-;-1:-1:-1;;;;;36432:17:0;;;;;;:9;:17;;;;;;;;:73;;;;36549:11;:19;;;;;;;;36548:20;:47;;;;-1:-1:-1;;;;;;36573:22:0;;;;;;:11;:22;;;;;;;;36572:23;36548:47;:93;;36635:6;36548:93;;;36598:34;36606:6;36614:9;36625:6;36598:7;:34::i;:::-;-1:-1:-1;;;;;36675:20:0;;;;;;:9;:20;;;;;;36526:115;;-1:-1:-1;36675:37:0;;36526:115;36675:24;:37::i;:::-;-1:-1:-1;;;;;36652:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;36758:24;;;;;:16;:24;;;;;;;36754:119;;36803:11;;;-1:-1:-1;;;;;36832:17:0;;;;;;:9;:17;;;;;;;;36803:47;;-1:-1:-1;;;36803:47:0;;;;;12547:51:1;;;;12614:18;;;12607:34;;;;36803:11:0;;:20;;12520:18:1;;36803:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36799:63;;-1:-1:-1;;;;;36889:27:0;;;;;;:16;:27;;;;;;;;36885:129;;36937:11;;;-1:-1:-1;;;;;36969:20:0;;;;;;:9;:20;;;;;;;;36937:53;;-1:-1:-1;;;36937:53:0;;;;;12547:51:1;;;;12614:18;;;12607:34;;;;36937:11:0;;:20;;12520:18:1;;36937:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36933:69;;37030:11;;;37050:14;37030:35;;-1:-1:-1;;;;;;37030:35:0;;-1:-1:-1;;;;;37030:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;37030:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37026:51;37092:14;;-1:-1:-1;;;37092:14:0;;;;37089:1653;;;37154:10;;-1:-1:-1;;;;;37144:20:0;;;37154:10;;37144:20;;;;:64;;-1:-1:-1;37198:10:0;;-1:-1:-1;;;;;37185:23:0;;;37198:10;;37185:23;;37144:64;:108;;;;-1:-1:-1;;;;;;37229:23:0;;;;37144:108;:157;;;;-1:-1:-1;;;;;;37273:28:0;;37294:6;37273:28;;37144:157;:195;;;;-1:-1:-1;37323:16:0;;-1:-1:-1;;;37323:16:0;;;;37322:17;37144:195;37122:1609;;;37404:10;;-1:-1:-1;;;;;37394:20:0;;;37404:10;;37394:20;;;;:41;;-1:-1:-1;37431:4:0;;-1:-1:-1;;;;;37418:17:0;;;37431:4;;37418:17;;37394:41;:71;;;;;37455:10;;37439:12;:26;37394:71;37391:197;;;-1:-1:-1;;;;;37489:22:0;;;;;;:11;:22;;;;;;:29;;-1:-1:-1;;37489:29:0;37514:4;37489:29;;;37546:22;;;37489;37546;37391:197;37701:14;;;;:32;;;;-1:-1:-1;37729:4:0;;-1:-1:-1;;;;;37719:14:0;;;37729:4;;37719:14;37701:32;37697:146;;;37781:13;;37766:11;:28;;37758:65;;;;-1:-1:-1;;;37758:65:0;;12854:2:1;37758:65:0;;;12836:21:1;12893:2;12873:18;;;12866:30;12932:26;12912:18;;;12905:54;12976:18;;37758:65:0;12652:348:1;37758:65:0;38017:20;;-1:-1:-1;;;38017:20:0;;;;38013:439;;;38087:10;;-1:-1:-1;;;;;38066:32:0;;;38087:10;;38066:32;;;;:64;;-1:-1:-1;38123:6:0;;-1:-1:-1;;;;;38102:28:0;;;38123:6;;38102:28;;38066:64;:94;;;;-1:-1:-1;38155:4:0;;-1:-1:-1;;;;;38134:26:0;;;38155:4;;38134:26;;38066:94;38061:372;;;-1:-1:-1;;;;;38196:39:0;;;;;;:28;:39;;;;;;38238:12;-1:-1:-1;38188:140:0;;;;-1:-1:-1;;;38188:140:0;;13207:2:1;38188:140:0;;;13189:21:1;13246:2;13226:18;;;13219:30;13285:34;13265:18;;;13258:62;13356:34;13336:18;;;13329:62;-1:-1:-1;;;13407:19:1;;;13400:40;13457:19;;38188:140:0;13005:477:1;38188:140:0;-1:-1:-1;;;;;38355:39:0;;;;;;:28;:39;;;;;38397:12;38355:54;;38061:372;-1:-1:-1;;;;;38476:27:0;;;;;;:16;:27;;;;;;;;38472:158;;38589:10;;-1:-1:-1;;;;;38553:20:0;;;;;;:9;:20;;;;;;:32;;38578:6;38553:24;:32::i;:::-;:46;;38545:65;;;;-1:-1:-1;;;38545:65:0;;13689:2:1;38545:65:0;;;13671:21:1;13728:1;13708:18;;;13701:29;-1:-1:-1;;;13746:18:1;;;13739:36;13792:18;;38545:65:0;13487:329:1;38545:65:0;38668:12;;38658:6;:22;;:50;;;-1:-1:-1;;;;;;38684:24:0;;;;;;:16;:24;;;;;;;;38658:50;38650:65;;;;-1:-1:-1;;;38650:65:0;;14023:2:1;38650:65:0;;;14005:21:1;14062:1;14042:18;;;14035:29;-1:-1:-1;;;14080:18:1;;;14073:32;14122:18;;38650:65:0;13821:325:1;38650:65:0;-1:-1:-1;;;;;38856:19:0;;;;;;:11;:19;;;;;;;;:59;;;;;38900:15;38879:18;;:36;38856:59;38853:347;;;-1:-1:-1;;;;;38940:19:0;;;;;;:11;:19;;;;;;;;38939:20;;:61;;;38985:15;38963:18;;:37;;38939:61;38931:163;;;;-1:-1:-1;;;38931:163:0;;14353:2:1;38931:163:0;;;14335:21:1;14392:2;14372:18;;;14365:30;14431:34;14411:18;;;14404:62;14502:34;14482:18;;;14475:62;14574:27;14553:19;;;14546:56;14619:19;;38931:163:0;14151:493:1;38931:163:0;39120:8;;:12;;39131:1;39120:12;:::i;:::-;39109:8;:23;39167:17;;:21;;39187:1;39167:21;:::i;:::-;39147:17;:41;38853:347;39236:9;-1:-1:-1;;;;;39219:40:0;39228:6;-1:-1:-1;;;;;39219:40:0;;39247:11;39219:40;;;;160:25:1;;148:2;133:18;;14:177;39219:40:0;;;;;;;;-1:-1:-1;39277:4:0;;35680:3609;-1:-1:-1;;;;35680:3609:0:o;7790:98::-;7848:7;7875:5;7879:1;7875;:5;:::i;39301:330::-;39431:53;;;;;;;;;;;-1:-1:-1;;;39431:53:0;;;;;;;;-1:-1:-1;;;;;39431:17:0;;39394:4;39431:17;;;:9;:17;;;;;;;:53;;39453:6;;39431:21;:53::i;:::-;-1:-1:-1;;;;;39411:17:0;;;;;;;:9;:17;;;;;;:73;;;;39518:20;;;;;;;:32;;39543:6;39518:24;:32::i;:::-;-1:-1:-1;;;;;39495:20:0;;;;;;;:9;:20;;;;;;;:55;;;;39566:35;;;;;;;;;;39594:6;160:25:1;;148:2;133:18;;14:177;39566:35:0;;;;;;;;-1:-1:-1;39619:4:0;39301:330;;;;;:::o;41933:1410::-;26336:16;:23;;-1:-1:-1;;;;26336:23:0;-1:-1:-1;;;26336:23:0;;;42039:4:::1;26336:23:::0;42021:24;;;:9:::1;:24;::::0;;;;;;;42109:8:::1;::::0;42021:24;;26336:23;42082:43:::1;::::0;:36:::1;::::0;;42021:24;26336:23;42082:19:::1;:22::i;:::-;:26:::0;::::1;:36::i;:43::-;42056:69:::0;-1:-1:-1;42136:20:0::1;42159:36;:15:::0;42056:69;42159:19:::1;:36::i;:::-;42232:16;::::0;;42246:1:::1;42232:16:::0;;;;;::::1;::::0;;42136:59;;-1:-1:-1;42208:21:0::1;::::0;42232:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;42232:16:0::1;42208:40;;42277:4;42259;42264:1;42259:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;42259:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;42303:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;42303:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;42259:7;;42303:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42293:4;42298:1;42293:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;42293:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;42329:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;42329:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;42401:12;;42329:6:::1;::::0;42444:4;;42471::::1;::::0;42491:15:::1;::::0;42329:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;42530:17;42550:21;42530:41;;42582:18;42603:42;42636:8;;42603:28;42617:13;;42603:9;:13;;:28;;;;:::i;:42::-;42582:63;;42658:26;42687:37;42722:1;42687:30;42708:8;;42687:16;42701:1;42687:9;:13;;:16;;;;:::i;:37::-;42658:66:::0;-1:-1:-1;42735:27:0::1;42765:49;42658:66:::0;42765:25:::1;:9:::0;42779:10;42765:13:::1;:25::i;:49::-;42735:79:::0;-1:-1:-1;42832:13:0;;42829:83:::1;;42872:7;::::0;:28:::1;::::0;-1:-1:-1;;;;;42872:7:0;;::::1;::::0;:28;::::1;;;::::0;42889:10;;42872:7:::1;:28:::0;:7;:28;42889:10;42872:7;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;42829:83;42936:11;::::0;::::1;;;;;;-1:-1:-1::0;;;;;42936:11:0::1;-1:-1:-1::0;;;;;42936:19:0::1;;42963;42936:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;42932:65:::0;43012:19;;43009:315:::1;;43047:6;::::0;:265:::1;::::0;-1:-1:-1;;;43047:265:0;;43123:4:::1;43047:265;::::0;::::1;16534:34:1::0;16584:18;;;16577:34;;;43047:6:0::1;16627:18:1::0;;;16620:34;;;16670:18;;;16663:34;43221:42:0::1;16713:19:1::0;;;16706:44;43282:15:0::1;16766:19:1::0;;;16759:35;-1:-1:-1;;;;;43047:6:0;;::::1;::::0;:22:::1;::::0;43077:18;;16468:19:1;;43047:265:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43009:315;-1:-1:-1::0;;26382:16:0;:24;;-1:-1:-1;;;;26382:24:0;;;-1:-1:-1;;;;;;41933:1410:0:o;9688:240::-;9808:7;9869:12;9861:6;;;;9853:29;;;;-1:-1:-1;;;9853:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9904:5:0;;;9688:240::o;41486:439::-;41626:4;;41572:7;;;;-1:-1:-1;;;;;41626:17:0;;;:4;;:17;:48;;41666:8;;41626:48;;;41646:17;;41626:48;41602:72;-1:-1:-1;41685:17:0;41705:34;41735:3;41705:25;:6;41602:72;41705:10;:25::i;:34::-;41797:4;41779:24;;;;:9;:24;;;;;;41685:54;;-1:-1:-1;41779:39:0;;41685:54;41779:28;:39::i;:::-;41770:4;41752:24;;;;:9;:24;;;;;;;:66;;;;41834:42;;-1:-1:-1;;;;;41834:42:0;;;;;;;41866:9;160:25:1;;148:2;133:18;;14:177;41834:42:0;;;;;;;;41896:21;:6;41907:9;41896:10;:21::i;:::-;41889:28;41486:439;-1:-1:-1;;;;;;41486:439:0:o;8147:98::-;8205:7;8232:5;8236:1;8232;:5;:::i;8546:98::-;8604:7;8631:5;8635:1;8631;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:134::-;1002:20;;1031:31;1002:20;1031:31;:::i;:::-;934:134;;;:::o;1073:315::-;1141:6;1149;1202:2;1190:9;1181:7;1177:23;1173:32;1170:52;;;1218:1;1215;1208:12;1170:52;1257:9;1244:23;1276:31;1301:5;1276:31;:::i;:::-;1326:5;1378:2;1363:18;;;;1350:32;;-1:-1:-1;;;1073:315:1:o;1585:180::-;1644:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:52;;;1713:1;1710;1703:12;1665:52;-1:-1:-1;1736:23:1;;1585:180;-1:-1:-1;1585:180:1:o;1994:456::-;2071:6;2079;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;2195:9;2182:23;2214:31;2239:5;2214:31;:::i;:::-;2264:5;-1:-1:-1;2321:2:1;2306:18;;2293:32;2334:33;2293:32;2334:33;:::i;:::-;1994:456;;2386:7;;-1:-1:-1;;;2440:2:1;2425:18;;;;2412:32;;1994:456::o;2455:248::-;2523:6;2531;2584:2;2572:9;2563:7;2559:23;2555:32;2552:52;;;2600:1;2597;2590:12;2552:52;-1:-1:-1;;2623:23:1;;;2693:2;2678:18;;;2665:32;;-1:-1:-1;2455:248:1:o;2897:255::-;2964:6;3017:2;3005:9;2996:7;2992:23;2988:32;2985:52;;;3033:1;3030;3023:12;2985:52;3072:9;3059:23;3091:31;3116:5;3091:31;:::i;3157:160::-;3222:20;;3278:13;;3271:21;3261:32;;3251:60;;3307:1;3304;3297:12;3322:248;3387:6;3395;3448:2;3436:9;3427:7;3423:23;3419:32;3416:52;;;3464:1;3461;3454:12;3416:52;3487:26;3503:9;3487:26;:::i;4063:385::-;4149:6;4157;4165;4173;4226:3;4214:9;4205:7;4201:23;4197:33;4194:53;;;4243:1;4240;4233:12;4194:53;-1:-1:-1;;4266:23:1;;;4336:2;4321:18;;4308:32;;-1:-1:-1;4387:2:1;4372:18;;4359:32;;4438:2;4423:18;4410:32;;-1:-1:-1;4063:385:1;-1:-1:-1;4063:385:1:o;4453:127::-;4514:10;4509:3;4505:20;4502:1;4495:31;4545:4;4542:1;4535:15;4569:4;4566:1;4559:15;4585:1121;4669:6;4700:2;4743;4731:9;4722:7;4718:23;4714:32;4711:52;;;4759:1;4756;4749:12;4711:52;4799:9;4786:23;4828:18;4869:2;4861:6;4858:14;4855:34;;;4885:1;4882;4875:12;4855:34;4923:6;4912:9;4908:22;4898:32;;4968:7;4961:4;4957:2;4953:13;4949:27;4939:55;;4990:1;4987;4980:12;4939:55;5026:2;5013:16;5048:2;5044;5041:10;5038:36;;;5054:18;;:::i;:::-;5100:2;5097:1;5093:10;5132:2;5126:9;5195:2;5191:7;5186:2;5182;5178:11;5174:25;5166:6;5162:38;5250:6;5238:10;5235:22;5230:2;5218:10;5215:18;5212:46;5209:72;;;5261:18;;:::i;:::-;5297:2;5290:22;5347:18;;;5381:15;;;;-1:-1:-1;5423:11:1;;;5419:20;;;5451:19;;;5448:39;;;5483:1;5480;5473:12;5448:39;5507:11;;;;5527:148;5543:6;5538:3;5535:15;5527:148;;;5609:23;5628:3;5609:23;:::i;:::-;5597:36;;5560:12;;;;5653;;;;5527:148;;;5694:6;4585:1121;-1:-1:-1;;;;;;;;4585:1121:1:o;5711:315::-;5776:6;5784;5837:2;5825:9;5816:7;5812:23;5808:32;5805:52;;;5853:1;5850;5843:12;5805:52;5892:9;5879:23;5911:31;5936:5;5911:31;:::i;:::-;5961:5;-1:-1:-1;5985:35:1;6016:2;6001:18;;5985:35;:::i;:::-;5975:45;;5711:315;;;;;:::o;6239:388::-;6307:6;6315;6368:2;6356:9;6347:7;6343:23;6339:32;6336:52;;;6384:1;6381;6374:12;6336:52;6423:9;6410:23;6442:31;6467:5;6442:31;:::i;:::-;6492:5;-1:-1:-1;6549:2:1;6534:18;;6521:32;6562:33;6521:32;6562:33;:::i;:::-;6614:7;6604:17;;;6239:388;;;;;:::o;6866:380::-;6945:1;6941:12;;;;6988;;;7009:61;;7063:4;7055:6;7051:17;7041:27;;7009:61;7116:2;7108:6;7105:14;7085:18;7082:38;7079:161;;7162:10;7157:3;7153:20;7150:1;7143:31;7197:4;7194:1;7187:15;7225:4;7222:1;7215:15;7079:161;;6866:380;;;:::o;7251:356::-;7453:2;7435:21;;;7472:18;;;7465:30;7531:34;7526:2;7511:18;;7504:62;7598:2;7583:18;;7251:356::o;7865:127::-;7926:10;7921:3;7917:20;7914:1;7907:31;7957:4;7954:1;7947:15;7981:4;7978:1;7971:15;7997:128;8037:3;8068:1;8064:6;8061:1;8058:13;8055:39;;;8074:18;;:::i;:::-;-1:-1:-1;8110:9:1;;7997:128::o;8812:127::-;8873:10;8868:3;8864:20;8861:1;8854:31;8904:4;8901:1;8894:15;8928:4;8925:1;8918:15;8944:135;8983:3;9004:17;;;9001:43;;9024:18;;:::i;:::-;-1:-1:-1;9071:1:1;9060:13;;8944:135::o;14649:168::-;14689:7;14755:1;14751;14747:6;14743:14;14740:1;14737:21;14732:1;14725:9;14718:17;14714:45;14711:71;;;14762:18;;:::i;:::-;-1:-1:-1;14802:9:1;;14649:168::o;14822:125::-;14862:4;14890:1;14887;14884:8;14881:34;;;14895:18;;:::i;:::-;-1:-1:-1;14932:9:1;;14822:125::o;14952:251::-;15022:6;15075:2;15063:9;15054:7;15050:23;15046:32;15043:52;;;15091:1;15088;15081:12;15043:52;15123:9;15117:16;15142:31;15167:5;15142:31;:::i;15208:980::-;15470:4;15518:3;15507:9;15503:19;15549:6;15538:9;15531:25;15575:2;15613:6;15608:2;15597:9;15593:18;15586:34;15656:3;15651:2;15640:9;15636:18;15629:31;15680:6;15715;15709:13;15746:6;15738;15731:22;15784:3;15773:9;15769:19;15762:26;;15823:2;15815:6;15811:15;15797:29;;15844:1;15854:195;15868:6;15865:1;15862:13;15854:195;;;15933:13;;-1:-1:-1;;;;;15929:39:1;15917:52;;16024:15;;;;15989:12;;;;15965:1;15883:9;15854:195;;;-1:-1:-1;;;;;;;16105:32:1;;;;16100:2;16085:18;;16078:60;-1:-1:-1;;;16169:3:1;16154:19;16147:35;16066:3;15208:980;-1:-1:-1;;;15208:980:1:o;16805:306::-;16893:6;16901;16909;16962:2;16950:9;16941:7;16937:23;16933:32;16930:52;;;16978:1;16975;16968:12;16930:52;17007:9;17001:16;16991:26;;17057:2;17046:9;17042:18;17036:25;17026:35;;17101:2;17090:9;17086:18;17080:25;17070:35;;16805:306;;;;;:::o;17116:217::-;17156:1;17182;17172:132;;17226:10;17221:3;17217:20;17214:1;17207:31;17261:4;17258:1;17251:15;17289:4;17286:1;17279:15;17172:132;-1:-1:-1;17318:9:1;;17116:217::o

Swarm Source

ipfs://1836c2d0122f2dc205ca94f1373f71a96c3877c7bec1c6b136fafdfb9706af59
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.