ETH Price: $2,464.24 (+0.80%)

Token

Genis Inu (Genos)
 

Overview

Max Total Supply

1,000,000,000,000,000 Genos

Holders

102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 Genos

Value
$0.00
0xcd38e654130d83ab9cfd2b7b10a48b59832a5163
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:
GenosInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-08
*/

// SPDX-License-Identifier: MIT

/*
https://www.genosinu.xyz
https://t.me/GenosInu

- 3 Anti-snipe measures
- Max wallet of 2.0%
- Stealth relaunch on ERC-20

*/

pragma solidity >=0.6.0 <0.9.0;

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

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

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

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

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

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

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

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

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

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

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

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

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

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function allPairs(uint) external view returns (address lpPair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
}

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

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private lastTrade;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private _isBlacklisted;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply = 1_000_000_000_000_000; //1 Quadrillion, underscores aid readability
   
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals = 9;
    uint256 private _decimalsMul = _decimals;
    uint256 private _tTotal = startingSupply * 10**_decimalsMul;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Genis Inu";
    string private _symbol = "Genos";
    
    uint256 public _reflectFee = 200; // All taxes are divided by 100 for more accuracy.
    uint256 private _previousReflectFee = _reflectFee;
    uint256 private maxReflectFee = 800;
    
    uint256 public _liquidityFee = 200; // All taxes are divided by 100 for more accuracy.
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private maxLiquidityFee = 800;

    uint256 public _marketingFee = 600; // All taxes are divided by 100 for more accuracy.
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private maxMarketingFee = 800;

    uint256 private masterTaxDivisor = 10000; // All tax calculations are divided by this number.

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // Uniswap Router
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address public burnAddress = 0x000000000000000000000000000000000000dEaD;
    address payable private _marketingWallet = payable(0xe53A5223565F525c80f8F513A7Ecc364619B40b4);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    // Max TX amount is 0.5% of the total supply.
    uint256 private maxTxPercent = 5; // Less fields to edit
    uint256 private maxTxDivisor = 1000;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    uint256 private _previousMaxTxAmount = _maxTxAmount;
    uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor; // Actual amount for UI's
    // Maximum wallet size is 2% of the total supply.
    uint256 private maxWalletPercent = 2; // Less fields to edit
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    uint256 private _previousMaxWalletSize = _maxWalletSize;
    uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor; // Actual amount for UI's
    // 0.05% of Total Supply
    uint256 private numTokensSellToAddToLiquidity = (_tTotal * 5) / 10000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private immutable snipeBlockAmt;
    uint256 public snipersCaught = 0;
    bool private gasLimitActive = true;
    uint256 private gasPriceLimit;
    bool private sameBlockActive = true;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor (uint256 _snipeBlockAmt, uint256 _gasPriceLimit) payable {
        _tOwned[_msgSender()] = _tTotal;
        _rOwned[_msgSender()] = _rTotal;

        // Set the amount of blocks to count a sniper.
        snipeBlockAmt = _snipeBlockAmt;
        gasPriceLimit = _gasPriceLimit * 1 gwei;

        IUniswapV2Router02 _dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _liquidityHolders[owner()] = true;
        _isExcluded[address(this)] = true;
        _excluded.push(address(this));
        _isExcluded[owner()] = true;
        _excluded.push(owner());
        _isExcluded[burnAddress] = true;
        _excluded.push(burnAddress);
        _isExcluded[_marketingWallet] = true;
        _excluded.push(_marketingWallet);
        _isExcluded[lpPair] = true;
        _excluded.push(lpPair);
        // DxLocker Address (BSC)
        _isExcludedFromFee[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true;
        _isExcluded[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true;
        _excluded.push(0x2D045410f002A95EFcEE67759A92518fA3FcE677);

        // Approve the owner for PancakeSwap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Ever-growing sniper/tool blacklist
	_isBlacklisted[0xE4882975f933A199C92b5A925C9A8fE65d599Aa8] = true;
        _isBlacklisted[0x86C70C4a3BC775FB4030448c9fdb73Dc09dd8444] = true;
        _isBlacklisted[0xa4A25AdcFCA938aa030191C297321323C57148Bd] = true;
        _isBlacklisted[0x20C00AFf15Bb04cC631DB07ee9ce361ae91D12f8] = true;
        _isBlacklisted[0x0538856b6d0383cde1709c6531B9a0437185462b] = true;
        _isBlacklisted[0xa76e2294d3FeEfaCd17e1ad4d0971a50685FF3A5] = true;
        _isBlacklisted[0xB995Ec6e8292C1b4ff1e2E0D354789a5A136DcfA] = true;
        _isBlacklisted[0x9b61312263D804F7bcCC66492BAc6eDE8bE2DFb6] = true;
        _isBlacklisted[0x0E388888309d64e97F97a4740EC9Ed3DADCA71be] = true;
        _isBlacklisted[0x93a2d57088BC7ad7C69feEE402E753606d045237] = true;
        _isBlacklisted[0x6932a1C9276b0dF81edadC818c9D5157f1Bbc6E0] = true;
        _isBlacklisted[0x3233b0919fe9BE5E289446c26C7322Cbc464838b] = true;
        _isBlacklisted[0xed0c2fFAfbF2e337680CcB6255C44b19C8F586e5] = true;
        _isBlacklisted[0x925ED3529f6fF3913278C5B3B1C103dD3c4Bdd16] = true;
        _isBlacklisted[0x9e1a9C8202777B251A17bf288A2a0903EF5d9885] = true;
        _isBlacklisted[0xA94E56EFc384088717bb6edCccEc289A72Ec2381] = true;
        _isBlacklisted[0x9560A38F4F7E52AF49B0BE4033450198Ca88d81b] = true;
        _isBlacklisted[0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA] = true;
        _isBlacklisted[0x6077831872bbB434960a28991B941cC2f26a84Aa] = true;
        _isBlacklisted[0x2336b2eCE8103c80fA823C9387de8Da8Cce7E2a4] = true;
        _isBlacklisted[0x2336b2eCE8103c80fA823C9387de8Da8Cce7E2a4] = true;
        _isBlacklisted[0xde594D578E98533D3663027E4AA3Ba976442dB40] = true;
        _isBlacklisted[0x3DfbbFDBD20754BB3489dC4FD955719be61FF755] = true;
        _isBlacklisted[0x549cdf92D66C648A563CAC307Ea03F12E3835d8C] = true;
        _isBlacklisted[0x6faA2Bb2f1125A1AD4a6551631C1f85DDD39b21a] = true;
        _isBlacklisted[0x4Db61B50607086483eA59810e05f3E2F2384a748] = true;
        _isBlacklisted[0xeA1079a114afCD0d7Ffe2171A070D93191913bc6] = true;
        _isBlacklisted[0x6077831872bbB434960a28991B941cC2f26a84Aa] = true;
        _isBlacklisted[0x2336b2eCE8103c80fA823C9387de8Da8Cce7E2a4] = true;
        _isBlacklisted[0xde594D578E98533D3663027E4AA3Ba976442dB40] = true;
        _isBlacklisted[0xeA1079a114afCD0d7Ffe2171A070D93191913bc6] = true;
        _isBlacklisted[0x93a2d57088BC7ad7C69feEE402E753606d045237] = true;
        _isBlacklisted[0x4Db61B50607086483eA59810e05f3E2F2384a748] = true;
        _isBlacklisted[0x6faA2Bb2f1125A1AD4a6551631C1f85DDD39b21a] = true;
        _isBlacklisted[0x3DfbbFDBD20754BB3489dC4FD955719be61FF755] = true;
        _isBlacklisted[0x2AC6C749B0d9a4908D935Bb26B0dDCbc7a9F76C6] = true;
        _isBlacklisted[0xde594D578E98533D3663027E4AA3Ba976442dB40] = true;
        _isBlacklisted[0x50A77964D208b5cA4B86B8EaB5E9b8C10bb70390] = true;
        _isBlacklisted[0xeA1079a114afCD0d7Ffe2171A070D93191913bc6] = true;
        _isBlacklisted[0x93a2d57088BC7ad7C69feEE402E753606d045237] = true;
        _isBlacklisted[0x4Db61B50607086483eA59810e05f3E2F2384a748] = true;
        _isBlacklisted[0x6faA2Bb2f1125A1AD4a6551631C1f85DDD39b21a] = true;
        _isBlacklisted[0x3DfbbFDBD20754BB3489dC4FD955719be61FF755] = true;
        _isBlacklisted[0x00000000003b3cc22aF3aE1EAc0440BcEe416B40] = true;
        _isBlacklisted[0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C] = true;
        _isBlacklisted[0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA] = true;
        _isBlacklisted[0xA94E56EFc384088717bb6edCccEc289A72Ec2381] = true;
        _isBlacklisted[0x3066Cc1523dE539D36f94597e233719727599693] = true;
        _isBlacklisted[0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31] = true;
        _isBlacklisted[0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27] = true;
        _isBlacklisted[0x201044fa39866E6dD3552D922CDa815899F63f20] = true;
        _isBlacklisted[0x6F3aC41265916DD06165b750D88AB93baF1a11F8] = true;
        _isBlacklisted[0x27C71ef1B1bb5a9C9Ee0CfeCEf4072AbAc686ba6] = true;
        _isBlacklisted[0xDEF441C00B5Ca72De73b322aA4e5FE2b21D2D593] = true;
        _isBlacklisted[0x5668e6e8f3C31D140CC0bE918Ab8bB5C5B593418] = true;
        _isBlacklisted[0x4b9BDDFB48fB1529125C14f7730346fe0E8b5b40] = true;
        _isBlacklisted[0x7e2b3808cFD46fF740fBd35C584D67292A407b95] = true;
        _isBlacklisted[0xe89C7309595E3e720D8B316F065ecB2730e34757] = true;
        _isBlacklisted[0x725AD056625326B490B128E02759007BA5E4eBF1] = true;

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

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

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

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

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

    function isBlacklisted(address account) public view returns (bool) {
        return _isBlacklisted[account];
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isBlacklisted[account] = enabled;
    }

    function setProtectionSettings(bool antiSnipe, bool antiGas, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        gasLimitActive = antiGas;
        sameBlockActive = antiBlock;
    }
    
    function setTaxFeePercent(uint256 reflectFee) external onlyOwner() {
        _reflectFee = reflectFee;
    }
    
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }

    function setMarketingFeePercent(uint256 marketingFee) external onlyOwner() {
        _marketingFee = marketingFee;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(percent).div(divisor);
        maxTxAmountUI = startingSupply.mul(percent).div(divisor);
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner() {
        _maxWalletSize = _tTotal.mul(percent).div(divisor);
        maxWalletSizeUI = startingSupply.mul(percent).div(divisor);
    }

    function setMarketingWallet(address payable newWallet) external onlyOwner {
        _marketingWallet = payable(newWallet);
    }

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

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

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 150);
        gasPriceLimit = gas * 1 gwei;
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != burnAddress
            && to != address(0)
            && from != address(this);
    }

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

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

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

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

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
     //to recieve ETH from dexRouter when swaping
    receive() external payable {}

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address from
,        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (gasLimitActive) {
            require(tx.gasprice <= gasPriceLimit, "Gas price exceeds limit.");
        }
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (from == lpPair){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            if(to != _routerAddress && to != lpPair) {
                uint256 contractBalanceRecepient = balanceOf(to);
                require(contractBalanceRecepient + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }


        uint256 contractTokenBalance = balanceOf(address(this));
        
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (!inSwapAndLiquify
            && to == lpPair
            && swapAndLiquifyEnabled
        ) {
            if (overMinTokenBalance) {
                contractTokenBalance = numTokensSellToAddToLiquidity;
                swapAndLiquify(contractTokenBalance);
            }
        }
        
        bool takeFee = true;
        
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (_marketingFee + _liquidityFee == 0)
            return;
        uint256 toMarketing = contractTokenBalance.mul(_marketingFee).div(_marketingFee.add(_liquidityFee));
        uint256 toLiquify = contractTokenBalance.sub(toMarketing);

        // split the contract balance into halves
        uint256 half = toLiquify.div(2);
        uint256 otherHalf = toLiquify.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        uint256 toSwapForEth = half.add(toMarketing);
        swapTokensForEth(toSwapForEth);

        // how much ETH did we just swap into?
        uint256 fromSwap = address(this).balance.sub(initialBalance);
        uint256 liquidityBalance = fromSwap.mul(half).div(toSwapForEth);

        addLiquidity(otherHalf, liquidityBalance);

        emit SwapAndLiquify(half, liquidityBalance, otherHalf);

        _marketingWallet.transfer(fromSwap.sub(liquidityBalance));
    }

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            burnAddress,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddBlock = block.number;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address from, address to, uint256 amount,bool takeFee) private {
        // Failsafe, disable the whole system if needed.
        if (sniperProtection){
            // If sender is a sniper address, reject the transfer.
            if (isBlacklisted(from) || isBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            // Check if this is the liquidity adding tx to startup.
            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                    if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                        revert("Only owner can transfer at this time.");
                    }
            } else {
                if (_liqAddBlock > 0 
                    && from == lpPair 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        if(!takeFee)
            removeAllFee();
        
        _finalizeTransfer(from, to, amount);
        
        if(!takeFee)
            restoreAllFee();
    }

    function _finalizeTransfer(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);

        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);  
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        }

        if (tLiquidity > 0)
            _takeLiquidity(sender, tLiquidity);
        if (rFee > 0 || tFee > 0)
            _takeReflect(rFee, tFee);

        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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


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

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

    function _takeReflect(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    
    function _takeLiquidity(address sender, uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
        emit Transfer(sender, address(this), tLiquidity); // Transparency is the key to success.
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_reflectFee).div(masterTaxDivisor);
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee.add(_marketingFee)).div(masterTaxDivisor);
    }

    function removeAllFee() private {
        if(_reflectFee == 0 && _liquidityFee == 0) return;
        
        _previousReflectFee = _reflectFee;
        _previousLiquidityFee = _liquidityFee;
        _previousMarketingFee = _marketingFee;

        _reflectFee = 0;
        _liquidityFee = 0;
        _marketingFee = 0;
    }
    
    function restoreAllFee() private {
        _reflectFee = _previousReflectFee;
        _liquidityFee = _previousLiquidityFee;
        _marketingFee = _previousMarketingFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_snipeBlockAmt","type":"uint256"},{"internalType":"uint256","name":"_gasPriceLimit","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiGas","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405266038d7ea4c68000600a908155600b805460ff19166009908117909155600c819055620000319162001137565b600a54620000409190620011f5565b600d81905562000053906000196200126e565b620000619060001962001217565b600e556040805180820190915260098082526847656e697320496e7560b81b6020909201918252620000969160109162000fda565b506040805180820190915260058082526447656e6f7360d81b6020909201918252620000c59160119162000fda565b5060c8601281905560138190556103206014819055601582905560169190915560178190556102586018819055601955601a55612710601b55601e80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155601f805490911661dead17905560208054600161ff0160a01b03191673e53a5223565f525c80f8f513a7ecc364619b40b4179055600560218190556103e86022819055600d5490916200017a91620011f5565b620001869190620010d7565b602355602354602455602254602154600a54620001a49190620011f5565b620001b09190620010d7565b60255560026026556064602755602754602654600d54620001d29190620011f5565b620001de9190620010d7565b602855602854602955602754602654600a54620001fc9190620011f5565b620002089190620010d7565b602a55612710600d5460056200021f9190620011f5565b6200022b9190620010d7565b602b55602c805461ffff191660019081179091556000602d819055602e819055602f556030805460ff199081168317909155603280549091169091179055604051620041c7388190039081908339810160408190526200028b91620010b2565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5433600090815260026020908152604080832093909355600e5460019091529190205560808290526200030681633b9aca00620011f5565b603155601e546040805163c45a015560e01b815290516001600160a01b0390921691829163c45a0155916004808301926020929190829003018186803b1580156200035057600080fd5b505afa15801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b919062001080565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d457600080fd5b505afa158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062001080565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200045857600080fd5b505af11580156200046d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000493919062001080565b601d80546001600160a01b03199081166001600160a01b0393841617909155601c8054909116918316919091179055600160056000620004db6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080549092166001908117909255600990620005346000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553080825260069384905291812080549094166001908117909455600780548086018255908252600080516020620041a78339815191520180546001600160a01b031916909217909155620005bc6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556007620005f96000546001600160a01b031690565b8154600181810184556000938452602080852090920180546001600160a01b039485166001600160a01b031991821617909155601f80548516865260068085526040808820805460ff1990811687179091559254600780548088018255600080516020620041a783398151915290810180548816938b1693909317909255875489168a52828a208054861688179055875481548089018355830180548816918b16919091179055601d80548a168b52928a20805486168817905591548254808801845582018054871691909916179097557fd69065beb001f813cd9a3d51b0f8133a430245c30c4c2b136d558abc4c51af73805484168617905594527fffc22612366c08fd7ffc774fe323e3a4817e38b4f2740e0353c88dbe13ff725d805490911683179055825491820183559190935291018054909116732d045410f002a95efcee67759a92518fa3fce6771790556200076d620007553390565b601e54600d546001600160a01b039091169062000eae565b60086020527fa4a318a4ba833d535a213782db534d83019119799cafae11f04d1dba93ee7b408054600160ff1991821681179092557f2baaa8ba932e4195b3c3afd7682e52ef9560eb2fbf378948591149dea582df9280548216831790557f194d9d8ead9150018922e8ff214ac528f5d5eb8a25d0a8a20d6d1e0608edb96880548216831790557f2a93823f95923881912000576c000db402f9fee399435451fb800d180562f6c180548216831790557fa4927cac2a2355e3be249733827023d6a2c706d349f9c8a191da7115a133adb380548216831790557f572c1cff4f39bfe5c02b35e67e1f9daf67573dd83097532f1bf3c916ef1f148b80548216831790557fc11af5c998ea12a1db355c70b537d149d00bf62833ca0f979612e1ed18dcd34280548216831790557ff7a0aea07924d7eb2093cd7fd85e58ae58d484252cac9ae10a34e729f359d96580548216831790557fa91d2805f78c999710926e2979a7537bd8bba61da68d9c1cda9e992b08b4bde180548216831790557f065e105164aadb36980a413983778e0b966c42990add8f4ba1160d7666f74b6f80548216831790557f617196ff965aab37362edb604766d4cb4046c3557c4449d7941fafd28b187baa80548216831790557faba174d6d1a7905fcdb3560b3d391e612168814a8e0200ab304f4d2fe03d6b6a80548216831790557f9912a88c19124370fff7f2dad2cb10da6521882ca5737814d4a653e208f9adcd80548216831790557fd482fd1457da2f23cd65d7aafc1acbfc39f320514220679d297c4fb59c519fa680548216831790557f9f9571485703691eb2deaa522d164e746b217e6825c17295848dc93aaa396f7f80548216831790557f375015a6034648b595434d1c4e912171c67c8c2b1b604e4ab4fd782bbec44e1980548216831790557f55f47e989e73a8bdc2fea7324bb2e4f454d5192cbea45653af2c28277878ccbe80548216831790557f1404537361a41d763b83a307967861eb529f800e555ff5d152096a878636eabd80548216831790557f8dd56ba69c54e829d96458b51a2e19a4e127a5d2e21ea15e064776251fbe37c780548216831790557fd2d4871b1517c77561f69f83fc15fb42bf64e1a72139828e7a8e7834803b8bfb80548216831790557f25f426aee6e72a466ee6099c1d98d634d7b83c2bef98a5bfd9a94989714559a680548216831790557fef52108e57f55580288bc6f69b948f57ec3227c9a583cf9178551a05b777cae780548216831790557f04ddc337a35e78c371964b236a50e7b63a1d52b34ff618827bef5e06d08f831f80548216831790557f8500f5a1f21c72ada886063a89479cf1178fe7d05f1281907ef8aaab11b0d85080548216831790557fe3cfa30ad2a68370ce46a092144f2bad33bb0ba7c3e1bc34943672e624720f5e80548216831790557f1dd2c8db61e6c7d4a46621f29041acfb9c67170d56853c5b3eab60076c65e6bc80548216831790557f30b847a8500e300695791ae77e5f262e97ff05c8794919770542d51115d04bcd80548216831790557fc97e43568bd99b79197be0b90f236fb6fa2fb75efa1d9ce99e6e67352a590c7680548216831790557ff2d16d45ea2dc9157c60503cdbe6a26123912e1a52139ab4faf3d91bf39aebce80548216831790557f12d8608112bb818ff1ed30b92bb56960590fe20bca7be7305c97df444ebd136380548216831790557f4cc7186aa80e93208dcf4fc6f4c551ab950f0efcb1ff176b599eb799015901f180548216831790557fdde3677c91f0b25e4400fbd1cc0edb46285f0369ce9451d82d6f43064b56971c80548216831790557f3b6af5fc420f776b778596a0bcc73d6adc4fff7c7163619756f13e590ac978dc80548216831790557f480c851f0e84e7f7c9baff396b078162aa38ff0ba7d4ce8363b4a945410a137880548216831790557fa8c7228726786b9f078ecea7941df4545a4add61b380f39fd9c17e27e190144080548216831790557fce3babc048507e519795f49418b8c65c437b34c78ddabae209e2d66c5780690d80548216831790557f436ffe8bdea4657fa68c03200cb0daaaeb5425b8ea7f5e85d0dbcfa9cf2a839880548216831790557fc176b6f3361986bd01de80c291c2f2a860bdb256ba7a87125d9d122bafaf039a80548216831790557f066a718b6735d6a1ba6aa5507a8c8a7af10d75ceabf44195203889824001ff9a80548216831790557ff271c9ee5919962cb4b24503c44cea103b09f853490191ad520c14ee6b998dd580548216831790557f4c40f10c0fbc9d9c18fe12f4f1dd853c4ce5e935d5184ccd1379f7bc986a7e3b805482168317905573725ad056625326b490b128e02759007ba5e4ebf16000527f41057a762b86dca4c8762d416bcef8785bb9df9d3281db22a22d067309861b508054909116909117905562000e553390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000e9d91815260200190565b60405180910390a3505050620012b1565b6001600160a01b03831662000f165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b03821662000f795760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000f0d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b82805462000fe89062001231565b90600052602060002090601f0160209004810192826200100c576000855562001057565b82601f106200102757805160ff191683800117855562001057565b8280016001018555821562001057579182015b82811115620010575782518255916020019190600101906200103a565b506200106592915062001069565b5090565b5b808211156200106557600081556001016200106a565b6000602082840312156200109357600080fd5b81516001600160a01b0381168114620010ab57600080fd5b9392505050565b60008060408385031215620010c657600080fd5b505080516020909101519092909150565b600082620010e957620010e96200129b565b500490565b600181815b808511156200112f57816000190482111562001113576200111362001285565b808516156200112157918102915b93841c9390800290620010f3565b509250929050565b6000620010ab83836000826200115057506001620011ef565b816200115f57506000620011ef565b81600181146200117857600281146200118357620011a3565b6001915050620011ef565b60ff84111562001197576200119762001285565b50506001821b620011ef565b5060208310610133831016604e8410600b8410161715620011c8575081810a620011ef565b620011d48383620010ee565b8060001904821115620011eb57620011eb62001285565b0290505b92915050565b600081600019048311821515161562001212576200121262001285565b500290565b6000828210156200122c576200122c62001285565b500390565b600181811c908216806200124657607f821691505b602082108114156200126857634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200128057620012806200129b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b608051612eda620012cd6000396000611f970152612eda6000f3fe60806040526004361061028c5760003560e01c806352390c021161015a57806395d89b41116100c1578063e79d41601161007a578063e79d4160146107db578063ea2f0b37146107f1578063eec2744e14610811578063f2fde38b14610831578063f6540ec714610851578063fe575a871461086757600080fd5b806395d89b4114610700578063a457c2d714610715578063a9059cbb14610735578063b6f8f8dc14610755578063c49b9a8014610775578063dd62ed3e1461079557600080fd5b806370d5ae051161011357806370d5ae0514610654578063715018a61461067457806388f8202014610689578063893d20e8146106c25780638da5cb5b146106c25780638ee88c53146106e057600080fd5b806352390c021461058f5780635342acb4146105af5780635d098b38146105e857806364038409146106085780636bc87c3a1461061e57806370a082311461063457600080fd5b80632d838119116101fe578063437823ec116101b7578063437823ec146104cf578063452ed4f1146104ef5780634549b0391461050f578063457c194c1461052f5780634a74bb021461054f57806350a8e0161461057057600080fd5b80632d8381191461040d578063313ce5671461042d5780633685d4191461044f578063395093511461046f5780633bd5d1731461048f5780633f3cf56c146104af57600080fd5b806313114a9d1161025057806313114a9d1461036d57806315639c1b1461038c57806318160ddd146103a257806322976e0d146103b757806323b872dd146103cd57806326003957146103ed57600080fd5b8063061c82d01461029857806306fdde03146102ba5780630758d924146102e5578063092316021461031d578063095ea7b31461033d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612bb0565b6108a0565b005b3480156102c657600080fd5b506102cf6108d8565b6040516102dc9190612c3c565b60405180910390f35b3480156102f157600080fd5b50601c54610305906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561032957600080fd5b506102b8610338366004612bb0565b61096a565b34801561034957600080fd5b5061035d610358366004612b26565b6109b6565b60405190151581526020016102dc565b34801561037957600080fd5b50600f545b6040519081526020016102dc565b34801561039857600080fd5b5061037e60125481565b3480156103ae57600080fd5b50600d5461037e565b3480156103c357600080fd5b5061037e60185481565b3480156103d957600080fd5b5061035d6103e8366004612ab0565b6109cd565b3480156103f957600080fd5b506102b8610408366004612bec565b610a36565b34801561041957600080fd5b5061037e610428366004612bb0565b610a9c565b34801561043957600080fd5b50600b5460405160ff90911681526020016102dc565b34801561045b57600080fd5b506102b861046a366004612a3d565b610b20565b34801561047b57600080fd5b5061035d61048a366004612b26565b610cd7565b34801561049b57600080fd5b506102b86104aa366004612bb0565b610d0d565b3480156104bb57600080fd5b506102b86104ca366004612bec565b610df7565b3480156104db57600080fd5b506102b86104ea366004612a3d565b610e57565b3480156104fb57600080fd5b50601d54610305906001600160a01b031681565b34801561051b57600080fd5b5061037e61052a366004612bc9565b610ea5565b34801561053b57600080fd5b506102b861054a366004612bb0565b610f32565b34801561055b57600080fd5b5060205461035d90600160a81b900460ff1681565b34801561057c57600080fd5b50602c5461035d90610100900460ff1681565b34801561059b57600080fd5b506102b86105aa366004612a3d565b610f61565b3480156105bb57600080fd5b5061035d6105ca366004612a3d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f457600080fd5b506102b8610603366004612a3d565b6110b4565b34801561061457600080fd5b5061037e60255481565b34801561062a57600080fd5b5061037e60155481565b34801561064057600080fd5b5061037e61064f366004612a3d565b611100565b34801561066057600080fd5b50601f54610305906001600160a01b031681565b34801561068057600080fd5b506102b861115f565b34801561069557600080fd5b5061035d6106a4366004612a3d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106ce57600080fd5b506000546001600160a01b0316610305565b3480156106ec57600080fd5b506102b86106fb366004612bb0565b6111d3565b34801561070c57600080fd5b506102cf611202565b34801561072157600080fd5b5061035d610730366004612b26565b611211565b34801561074157600080fd5b5061035d610750366004612b26565b611260565b34801561076157600080fd5b506102b8610770366004612b6d565b61126d565b34801561078157600080fd5b506102b8610790366004612b52565b6112c8565b3480156107a157600080fd5b5061037e6107b0366004612a77565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e757600080fd5b5061037e602f5481565b3480156107fd57600080fd5b506102b861080c366004612a3d565b611342565b34801561081d57600080fd5b506102b861082c366004612af1565b61138d565b34801561083d57600080fd5b506102b861084c366004612a3d565b6113e2565b34801561085d57600080fd5b5061037e602a5481565b34801561087357600080fd5b5061035d610882366004612a3d565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146108d35760405162461bcd60e51b81526004016108ca90612c91565b60405180910390fd5b601255565b6060601080546108e790612da7565b80601f016020809104026020016040519081016040528092919081815260200182805461091390612da7565b80156109605780601f1061093557610100808354040283529160200191610960565b820191906000526020600020905b81548152906001019060200180831161094357829003601f168201915b5050505050905090565b6000546001600160a01b031633146109945760405162461bcd60e51b81526004016108ca90612c91565b60968110156109a257600080fd5b6109b081633b9aca00612d71565b60315550565b60006109c33384846114cc565b5060015b92915050565b60006109da8484846115f0565b610a2c8433610a2785604051806060016040528060288152602001612e58602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a14565b6114cc565b5060019392505050565b6000546001600160a01b03163314610a605760405162461bcd60e51b81526004016108ca90612c91565b610a7f81610a7984600d54611a4e90919063ffffffff16565b90611acd565b602855600a54610a95908290610a799085611a4e565b602a555050565b6000600e54821115610b035760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108ca565b6000610b0d611b0f565b9050610b198382611acd565b9392505050565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff16610bb25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b60005b600754811015610cd357816001600160a01b031660078281548110610bdc57610bdc612e29565b6000918252602090912001546001600160a01b03161415610cc15760078054610c0790600190612d90565b81548110610c1757610c17612e29565b600091825260209091200154600780546001600160a01b039092169183908110610c4357610c43612e29565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480610c9b57610c9b612e13565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ccb81612de2565b915050610bb5565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109c3918590610a279086611b32565b3360008181526006602052604090205460ff1615610d825760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108ca565b6000610d8d83611b91565b505050506001600160a01b038416600090815260016020526040902054919250610db991905082611be0565b6001600160a01b038316600090815260016020526040902055600e54610ddf9082611be0565b600e55600f54610def9084611b32565b600f55505050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016108ca90612c91565b610e3a81610a7984600d54611a4e90919063ffffffff16565b602355600a54610e50908290610a799085611a4e565b6025555050565b6000546001600160a01b03163314610e815760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600d54831115610ef95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108ca565b81610f18576000610f0984611b91565b509395506109c7945050505050565b6000610f2384611b91565b509295506109c7945050505050565b6000546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016108ca90612c91565b601855565b6000546001600160a01b03163314610f8b5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff1615610ff45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b6001600160a01b0381166000908152600160205260409020541561104e576001600160a01b03811660009081526001602052604090205461103490610a9c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146110de5760405162461bcd60e51b81526004016108ca90612c91565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561113d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109c790610a9c565b6000546001600160a01b031633146111895760405162461bcd60e51b81526004016108ca90612c91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111fd5760405162461bcd60e51b81526004016108ca90612c91565b601555565b6060601180546108e790612da7565b60006109c33384610a2785604051806060016040528060258152602001612e80602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611a14565b60006109c33384846115f0565b6000546001600160a01b031633146112975760405162461bcd60e51b81526004016108ca90612c91565b602c805493151560ff1994851617905560308054921515928416929092179091556032805491151591909216179055565b6000546001600160a01b031633146112f25760405162461bcd60e51b81526004016108ca90612c91565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b0316331461136c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146113b75760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461140c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b0381166114715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661152e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ca565b6001600160a01b03821661158f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ca565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116545760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ca565b6001600160a01b0382166116b65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ca565b600081116117185760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108ca565b60305460ff1615611775576031543a11156117755760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e000000000000000060448201526064016108ca565b61177f8383611c22565b1561193d5760325460ff161561182b57601d546001600160a01b03848116911614156117ea576001600160a01b0382166000908152600460205260409020544314156117ca57600080fd5b6001600160a01b038216600090815260046020526040902043905561182b565b6001600160a01b03831660009081526004602052604090205443141561180f57600080fd5b6001600160a01b03831660009081526004602052604090204390555b60235481111561188e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108ca565b601e546001600160a01b038381169116148015906118ba5750601d546001600160a01b03838116911614155b1561193d5760006118ca83611100565b6028549091506118da8383612d37565b111561193b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016108ca565b505b600061194830611100565b9050602354811061195857506023545b602b546020549082101590600160a01b900460ff161580156119875750601d546001600160a01b038581169116145b801561199c5750602054600160a81b900460ff165b156119b55780156119b557602b5491506119b582611cdf565b6001600160a01b03851660009081526005602052604090205460019060ff16806119f757506001600160a01b03851660009081526005602052604090205460ff165b15611a00575060005b611a0c86868684611e40565b505050505050565b60008184841115611a385760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d90565b95945050505050565b600082611a5d575060006109c7565b6000611a698385612d71565b905082611a768583612d4f565b14610b195760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108ca565b6000610b1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612077565b6000806000611b1c6120a5565b9092509050611b2b8282611acd565b9250505090565b600080611b3f8385612d37565b905083811015610b195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108ca565b6000806000806000806000806000611ba88a612227565b9250925092506000806000611bc68d8686611bc1611b0f565b612269565b919f909e50909c50959a5093985091965092945050505050565b6000610b1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a14565b600080546001600160a01b03848116911614801590611c4f57506000546001600160a01b03838116911614155b8015611c7457506001600160a01b03821660009081526009602052604090205460ff16155b8015611c9957506001600160a01b03831660009081526009602052604090205460ff16155b8015611cb35750601f546001600160a01b03838116911614155b8015611cc757506001600160a01b03821615155b8015610b19575050506001600160a01b031630141590565b6020805460ff60a01b1916600160a01b179055601554601854611d029190612d37565b611d0b57611e30565b6000611d35611d27601554601854611b3290919063ffffffff16565b601854610a79908590611a4e565b90506000611d438383611be0565b90506000611d52826002611acd565b90506000611d608383611be0565b9050476000611d6f8487611b32565b9050611d7a816122b9565b6000611d864784611be0565b90506000611d9883610a798489611a4e565b9050611da4858261241a565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a16020546001600160a01b03166108fc611dfe8484611be0565b6040518115909202916000818181858888f19350505050158015611e26573d6000803e3d6000fd5b5050505050505050505b506020805460ff60a01b19169055565b602c5460ff161561203d576001600160a01b03841660009081526008602052604090205460ff1680611e8a57506001600160a01b03831660009081526008602052604090205460ff165b15611eca5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108ca565b602c54610100900460ff16611f6057611ee384846124dd565b602c54610100900460ff16158015611f005750611f008484611c22565b15611f5b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108ca565b61203d565b6000602d54118015611f7f5750601d546001600160a01b038581169116145b8015611f905750611f908484611c22565b1561203d577f0000000000000000000000000000000000000000000000000000000000000000602d5443611fc49190612d90565b101561203d576001600160a01b0383166000908152600860205260408120805460ff19166001179055602f805491611ffb83612de2565b90915550506040516001600160a01b03841681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b8061204a5761204a6125f0565b612055848484612629565b8061207157612071601354601255601654601555601954601855565b50505050565b600081836120985760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d4f565b600e54600d546000918291825b6007548110156121f7578260016000600784815481106120d4576120d4612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061213f575081600260006007848154811061211857612118612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561215557600e54600d54945094505050509091565b61219b600160006007848154811061216f5761216f612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611be0565b92506121e360026000600784815481106121b7576121b7612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611be0565b9150806121ef81612de2565b9150506120b2565b50600d54600e5461220791611acd565b82101561221e57600e54600d549350935050509091565b90939092509050565b600080600080612236856128f4565b9050600061224386612911565b9050600061225b826122558986611be0565b90611be0565b979296509094509092505050565b60008080806122788886611a4e565b905060006122868887611a4e565b905060006122948888611a4e565b905060006122a6826122558686611be0565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122ee576122ee612e29565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561234257600080fd5b505afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a9190612a5a565b8160018151811061238d5761238d612e29565b6001600160a01b039283166020918202929092010152601c546123b391309116846114cc565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123ec908590600090869030904290600401612cc6565b600060405180830381600087803b15801561240657600080fd5b505af1158015611a0c573d6000803e3d6000fd5b601c546124329030906001600160a01b0316846114cc565b601c54601f5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561249d57600080fd5b505af11580156124b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124d69190612c0e565b5050505050565b602c54610100900460ff16156125415760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108ca565b61254b8282611c22565b1580156125655750601d546001600160a01b038281169116145b15610cd3576001600160a01b038216600090815260096020908152604091829020805460ff19166001908117909155602c805461ff00191661010017905543602d5542602e55815460ff60a81b1916600160a81b17825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6012541580156126005750601554155b1561260757565b6012805460135560158054601655601880546019556000928390559082905555565b60008060008060008061263b87611b91565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061266d9087611be0565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461269c9086611b32565b6001600160a01b03808a16600090815260016020908152604080832094909455918c1681526006909152205460ff1680156126f057506001600160a01b03881660009081526006602052604090205460ff16155b15612736576001600160a01b0389166000908152600260205260409020546127189088611be0565b6001600160a01b038a1660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1615801561277757506001600160a01b03881660009081526006602052604090205460ff165b156127bd576001600160a01b03881660009081526002602052604090205461279f9084611b32565b6001600160a01b03891660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1680156127fd57506001600160a01b03881660009081526006602052604090205460ff165b1561286e576001600160a01b0389166000908152600260205260409020546128259088611be0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546128549084611b32565b6001600160a01b0389166000908152600260205260409020555b801561287e5761287e898261293a565b600084118061288d5750600082115b1561289c5761289c8483612a04565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128e191815260200190565b60405180910390a3505050505050505050565b60006109c7601b54610a7960125485611a4e90919063ffffffff16565b60006109c7601b54610a79612933601854601554611b3290919063ffffffff16565b8590611a4e565b6000612944611b0f565b905060006129528383611a4e565b3060009081526001602052604090205490915061296f9082611b32565b3060009081526001602090815260408083209390935560069052205460ff16156129be57306000908152600260205260409020546129ad9084611b32565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600e54612a119083611be0565b600e55600f54612a219082611b32565b600f555050565b80358015158114612a3857600080fd5b919050565b600060208284031215612a4f57600080fd5b8135610b1981612e3f565b600060208284031215612a6c57600080fd5b8151610b1981612e3f565b60008060408385031215612a8a57600080fd5b8235612a9581612e3f565b91506020830135612aa581612e3f565b809150509250929050565b600080600060608486031215612ac557600080fd5b8335612ad081612e3f565b92506020840135612ae081612e3f565b929592945050506040919091013590565b60008060408385031215612b0457600080fd5b8235612b0f81612e3f565b9150612b1d60208401612a28565b90509250929050565b60008060408385031215612b3957600080fd5b8235612b4481612e3f565b946020939093013593505050565b600060208284031215612b6457600080fd5b610b1982612a28565b600080600060608486031215612b8257600080fd5b612b8b84612a28565b9250612b9960208501612a28565b9150612ba760408501612a28565b90509250925092565b600060208284031215612bc257600080fd5b5035919050565b60008060408385031215612bdc57600080fd5b82359150612b1d60208401612a28565b60008060408385031215612bff57600080fd5b50508035926020909101359150565b600080600060608486031215612c2357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612c6957858101830151858201604001528201612c4d565b81811115612c7b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d165784516001600160a01b031683529383019391830191600101612cf1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d4a57612d4a612dfd565b500190565b600082612d6c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d8b57612d8b612dfd565b500290565b600082821015612da257612da2612dfd565b500390565b600181811c90821680612dbb57607f821691505b60208210811415612ddc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612df657612df6612dfd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e5457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122078648d591f14f6684d2f67a2c353c002904ebf0d6979cbd89c940967e8295e1f64736f6c63430008070033a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000fa

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806352390c021161015a57806395d89b41116100c1578063e79d41601161007a578063e79d4160146107db578063ea2f0b37146107f1578063eec2744e14610811578063f2fde38b14610831578063f6540ec714610851578063fe575a871461086757600080fd5b806395d89b4114610700578063a457c2d714610715578063a9059cbb14610735578063b6f8f8dc14610755578063c49b9a8014610775578063dd62ed3e1461079557600080fd5b806370d5ae051161011357806370d5ae0514610654578063715018a61461067457806388f8202014610689578063893d20e8146106c25780638da5cb5b146106c25780638ee88c53146106e057600080fd5b806352390c021461058f5780635342acb4146105af5780635d098b38146105e857806364038409146106085780636bc87c3a1461061e57806370a082311461063457600080fd5b80632d838119116101fe578063437823ec116101b7578063437823ec146104cf578063452ed4f1146104ef5780634549b0391461050f578063457c194c1461052f5780634a74bb021461054f57806350a8e0161461057057600080fd5b80632d8381191461040d578063313ce5671461042d5780633685d4191461044f578063395093511461046f5780633bd5d1731461048f5780633f3cf56c146104af57600080fd5b806313114a9d1161025057806313114a9d1461036d57806315639c1b1461038c57806318160ddd146103a257806322976e0d146103b757806323b872dd146103cd57806326003957146103ed57600080fd5b8063061c82d01461029857806306fdde03146102ba5780630758d924146102e5578063092316021461031d578063095ea7b31461033d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612bb0565b6108a0565b005b3480156102c657600080fd5b506102cf6108d8565b6040516102dc9190612c3c565b60405180910390f35b3480156102f157600080fd5b50601c54610305906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561032957600080fd5b506102b8610338366004612bb0565b61096a565b34801561034957600080fd5b5061035d610358366004612b26565b6109b6565b60405190151581526020016102dc565b34801561037957600080fd5b50600f545b6040519081526020016102dc565b34801561039857600080fd5b5061037e60125481565b3480156103ae57600080fd5b50600d5461037e565b3480156103c357600080fd5b5061037e60185481565b3480156103d957600080fd5b5061035d6103e8366004612ab0565b6109cd565b3480156103f957600080fd5b506102b8610408366004612bec565b610a36565b34801561041957600080fd5b5061037e610428366004612bb0565b610a9c565b34801561043957600080fd5b50600b5460405160ff90911681526020016102dc565b34801561045b57600080fd5b506102b861046a366004612a3d565b610b20565b34801561047b57600080fd5b5061035d61048a366004612b26565b610cd7565b34801561049b57600080fd5b506102b86104aa366004612bb0565b610d0d565b3480156104bb57600080fd5b506102b86104ca366004612bec565b610df7565b3480156104db57600080fd5b506102b86104ea366004612a3d565b610e57565b3480156104fb57600080fd5b50601d54610305906001600160a01b031681565b34801561051b57600080fd5b5061037e61052a366004612bc9565b610ea5565b34801561053b57600080fd5b506102b861054a366004612bb0565b610f32565b34801561055b57600080fd5b5060205461035d90600160a81b900460ff1681565b34801561057c57600080fd5b50602c5461035d90610100900460ff1681565b34801561059b57600080fd5b506102b86105aa366004612a3d565b610f61565b3480156105bb57600080fd5b5061035d6105ca366004612a3d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f457600080fd5b506102b8610603366004612a3d565b6110b4565b34801561061457600080fd5b5061037e60255481565b34801561062a57600080fd5b5061037e60155481565b34801561064057600080fd5b5061037e61064f366004612a3d565b611100565b34801561066057600080fd5b50601f54610305906001600160a01b031681565b34801561068057600080fd5b506102b861115f565b34801561069557600080fd5b5061035d6106a4366004612a3d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106ce57600080fd5b506000546001600160a01b0316610305565b3480156106ec57600080fd5b506102b86106fb366004612bb0565b6111d3565b34801561070c57600080fd5b506102cf611202565b34801561072157600080fd5b5061035d610730366004612b26565b611211565b34801561074157600080fd5b5061035d610750366004612b26565b611260565b34801561076157600080fd5b506102b8610770366004612b6d565b61126d565b34801561078157600080fd5b506102b8610790366004612b52565b6112c8565b3480156107a157600080fd5b5061037e6107b0366004612a77565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e757600080fd5b5061037e602f5481565b3480156107fd57600080fd5b506102b861080c366004612a3d565b611342565b34801561081d57600080fd5b506102b861082c366004612af1565b61138d565b34801561083d57600080fd5b506102b861084c366004612a3d565b6113e2565b34801561085d57600080fd5b5061037e602a5481565b34801561087357600080fd5b5061035d610882366004612a3d565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146108d35760405162461bcd60e51b81526004016108ca90612c91565b60405180910390fd5b601255565b6060601080546108e790612da7565b80601f016020809104026020016040519081016040528092919081815260200182805461091390612da7565b80156109605780601f1061093557610100808354040283529160200191610960565b820191906000526020600020905b81548152906001019060200180831161094357829003601f168201915b5050505050905090565b6000546001600160a01b031633146109945760405162461bcd60e51b81526004016108ca90612c91565b60968110156109a257600080fd5b6109b081633b9aca00612d71565b60315550565b60006109c33384846114cc565b5060015b92915050565b60006109da8484846115f0565b610a2c8433610a2785604051806060016040528060288152602001612e58602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a14565b6114cc565b5060019392505050565b6000546001600160a01b03163314610a605760405162461bcd60e51b81526004016108ca90612c91565b610a7f81610a7984600d54611a4e90919063ffffffff16565b90611acd565b602855600a54610a95908290610a799085611a4e565b602a555050565b6000600e54821115610b035760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108ca565b6000610b0d611b0f565b9050610b198382611acd565b9392505050565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff16610bb25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b60005b600754811015610cd357816001600160a01b031660078281548110610bdc57610bdc612e29565b6000918252602090912001546001600160a01b03161415610cc15760078054610c0790600190612d90565b81548110610c1757610c17612e29565b600091825260209091200154600780546001600160a01b039092169183908110610c4357610c43612e29565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480610c9b57610c9b612e13565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ccb81612de2565b915050610bb5565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109c3918590610a279086611b32565b3360008181526006602052604090205460ff1615610d825760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108ca565b6000610d8d83611b91565b505050506001600160a01b038416600090815260016020526040902054919250610db991905082611be0565b6001600160a01b038316600090815260016020526040902055600e54610ddf9082611be0565b600e55600f54610def9084611b32565b600f55505050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016108ca90612c91565b610e3a81610a7984600d54611a4e90919063ffffffff16565b602355600a54610e50908290610a799085611a4e565b6025555050565b6000546001600160a01b03163314610e815760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600d54831115610ef95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108ca565b81610f18576000610f0984611b91565b509395506109c7945050505050565b6000610f2384611b91565b509295506109c7945050505050565b6000546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016108ca90612c91565b601855565b6000546001600160a01b03163314610f8b5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff1615610ff45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b6001600160a01b0381166000908152600160205260409020541561104e576001600160a01b03811660009081526001602052604090205461103490610a9c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146110de5760405162461bcd60e51b81526004016108ca90612c91565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561113d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109c790610a9c565b6000546001600160a01b031633146111895760405162461bcd60e51b81526004016108ca90612c91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111fd5760405162461bcd60e51b81526004016108ca90612c91565b601555565b6060601180546108e790612da7565b60006109c33384610a2785604051806060016040528060258152602001612e80602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611a14565b60006109c33384846115f0565b6000546001600160a01b031633146112975760405162461bcd60e51b81526004016108ca90612c91565b602c805493151560ff1994851617905560308054921515928416929092179091556032805491151591909216179055565b6000546001600160a01b031633146112f25760405162461bcd60e51b81526004016108ca90612c91565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b0316331461136c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146113b75760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461140c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b0381166114715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661152e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ca565b6001600160a01b03821661158f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ca565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116545760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ca565b6001600160a01b0382166116b65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ca565b600081116117185760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108ca565b60305460ff1615611775576031543a11156117755760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e000000000000000060448201526064016108ca565b61177f8383611c22565b1561193d5760325460ff161561182b57601d546001600160a01b03848116911614156117ea576001600160a01b0382166000908152600460205260409020544314156117ca57600080fd5b6001600160a01b038216600090815260046020526040902043905561182b565b6001600160a01b03831660009081526004602052604090205443141561180f57600080fd5b6001600160a01b03831660009081526004602052604090204390555b60235481111561188e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108ca565b601e546001600160a01b038381169116148015906118ba5750601d546001600160a01b03838116911614155b1561193d5760006118ca83611100565b6028549091506118da8383612d37565b111561193b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016108ca565b505b600061194830611100565b9050602354811061195857506023545b602b546020549082101590600160a01b900460ff161580156119875750601d546001600160a01b038581169116145b801561199c5750602054600160a81b900460ff165b156119b55780156119b557602b5491506119b582611cdf565b6001600160a01b03851660009081526005602052604090205460019060ff16806119f757506001600160a01b03851660009081526005602052604090205460ff165b15611a00575060005b611a0c86868684611e40565b505050505050565b60008184841115611a385760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d90565b95945050505050565b600082611a5d575060006109c7565b6000611a698385612d71565b905082611a768583612d4f565b14610b195760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108ca565b6000610b1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612077565b6000806000611b1c6120a5565b9092509050611b2b8282611acd565b9250505090565b600080611b3f8385612d37565b905083811015610b195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108ca565b6000806000806000806000806000611ba88a612227565b9250925092506000806000611bc68d8686611bc1611b0f565b612269565b919f909e50909c50959a5093985091965092945050505050565b6000610b1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a14565b600080546001600160a01b03848116911614801590611c4f57506000546001600160a01b03838116911614155b8015611c7457506001600160a01b03821660009081526009602052604090205460ff16155b8015611c9957506001600160a01b03831660009081526009602052604090205460ff16155b8015611cb35750601f546001600160a01b03838116911614155b8015611cc757506001600160a01b03821615155b8015610b19575050506001600160a01b031630141590565b6020805460ff60a01b1916600160a01b179055601554601854611d029190612d37565b611d0b57611e30565b6000611d35611d27601554601854611b3290919063ffffffff16565b601854610a79908590611a4e565b90506000611d438383611be0565b90506000611d52826002611acd565b90506000611d608383611be0565b9050476000611d6f8487611b32565b9050611d7a816122b9565b6000611d864784611be0565b90506000611d9883610a798489611a4e565b9050611da4858261241a565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a16020546001600160a01b03166108fc611dfe8484611be0565b6040518115909202916000818181858888f19350505050158015611e26573d6000803e3d6000fd5b5050505050505050505b506020805460ff60a01b19169055565b602c5460ff161561203d576001600160a01b03841660009081526008602052604090205460ff1680611e8a57506001600160a01b03831660009081526008602052604090205460ff165b15611eca5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108ca565b602c54610100900460ff16611f6057611ee384846124dd565b602c54610100900460ff16158015611f005750611f008484611c22565b15611f5b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108ca565b61203d565b6000602d54118015611f7f5750601d546001600160a01b038581169116145b8015611f905750611f908484611c22565b1561203d577f0000000000000000000000000000000000000000000000000000000000000002602d5443611fc49190612d90565b101561203d576001600160a01b0383166000908152600860205260408120805460ff19166001179055602f805491611ffb83612de2565b90915550506040516001600160a01b03841681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b8061204a5761204a6125f0565b612055848484612629565b8061207157612071601354601255601654601555601954601855565b50505050565b600081836120985760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d4f565b600e54600d546000918291825b6007548110156121f7578260016000600784815481106120d4576120d4612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061213f575081600260006007848154811061211857612118612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561215557600e54600d54945094505050509091565b61219b600160006007848154811061216f5761216f612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611be0565b92506121e360026000600784815481106121b7576121b7612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611be0565b9150806121ef81612de2565b9150506120b2565b50600d54600e5461220791611acd565b82101561221e57600e54600d549350935050509091565b90939092509050565b600080600080612236856128f4565b9050600061224386612911565b9050600061225b826122558986611be0565b90611be0565b979296509094509092505050565b60008080806122788886611a4e565b905060006122868887611a4e565b905060006122948888611a4e565b905060006122a6826122558686611be0565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122ee576122ee612e29565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561234257600080fd5b505afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a9190612a5a565b8160018151811061238d5761238d612e29565b6001600160a01b039283166020918202929092010152601c546123b391309116846114cc565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123ec908590600090869030904290600401612cc6565b600060405180830381600087803b15801561240657600080fd5b505af1158015611a0c573d6000803e3d6000fd5b601c546124329030906001600160a01b0316846114cc565b601c54601f5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561249d57600080fd5b505af11580156124b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124d69190612c0e565b5050505050565b602c54610100900460ff16156125415760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108ca565b61254b8282611c22565b1580156125655750601d546001600160a01b038281169116145b15610cd3576001600160a01b038216600090815260096020908152604091829020805460ff19166001908117909155602c805461ff00191661010017905543602d5542602e55815460ff60a81b1916600160a81b17825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6012541580156126005750601554155b1561260757565b6012805460135560158054601655601880546019556000928390559082905555565b60008060008060008061263b87611b91565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061266d9087611be0565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461269c9086611b32565b6001600160a01b03808a16600090815260016020908152604080832094909455918c1681526006909152205460ff1680156126f057506001600160a01b03881660009081526006602052604090205460ff16155b15612736576001600160a01b0389166000908152600260205260409020546127189088611be0565b6001600160a01b038a1660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1615801561277757506001600160a01b03881660009081526006602052604090205460ff165b156127bd576001600160a01b03881660009081526002602052604090205461279f9084611b32565b6001600160a01b03891660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1680156127fd57506001600160a01b03881660009081526006602052604090205460ff165b1561286e576001600160a01b0389166000908152600260205260409020546128259088611be0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546128549084611b32565b6001600160a01b0389166000908152600260205260409020555b801561287e5761287e898261293a565b600084118061288d5750600082115b1561289c5761289c8483612a04565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128e191815260200190565b60405180910390a3505050505050505050565b60006109c7601b54610a7960125485611a4e90919063ffffffff16565b60006109c7601b54610a79612933601854601554611b3290919063ffffffff16565b8590611a4e565b6000612944611b0f565b905060006129528383611a4e565b3060009081526001602052604090205490915061296f9082611b32565b3060009081526001602090815260408083209390935560069052205460ff16156129be57306000908152600260205260409020546129ad9084611b32565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600e54612a119083611be0565b600e55600f54612a219082611b32565b600f555050565b80358015158114612a3857600080fd5b919050565b600060208284031215612a4f57600080fd5b8135610b1981612e3f565b600060208284031215612a6c57600080fd5b8151610b1981612e3f565b60008060408385031215612a8a57600080fd5b8235612a9581612e3f565b91506020830135612aa581612e3f565b809150509250929050565b600080600060608486031215612ac557600080fd5b8335612ad081612e3f565b92506020840135612ae081612e3f565b929592945050506040919091013590565b60008060408385031215612b0457600080fd5b8235612b0f81612e3f565b9150612b1d60208401612a28565b90509250929050565b60008060408385031215612b3957600080fd5b8235612b4481612e3f565b946020939093013593505050565b600060208284031215612b6457600080fd5b610b1982612a28565b600080600060608486031215612b8257600080fd5b612b8b84612a28565b9250612b9960208501612a28565b9150612ba760408501612a28565b90509250925092565b600060208284031215612bc257600080fd5b5035919050565b60008060408385031215612bdc57600080fd5b82359150612b1d60208401612a28565b60008060408385031215612bff57600080fd5b50508035926020909101359150565b600080600060608486031215612c2357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612c6957858101830151858201604001528201612c4d565b81811115612c7b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d165784516001600160a01b031683529383019391830191600101612cf1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d4a57612d4a612dfd565b500190565b600082612d6c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d8b57612d8b612dfd565b500290565b600082821015612da257612da2612dfd565b500390565b600181811c90821680612dbb57607f821691505b60208210811415612ddc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612df657612df6612dfd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e5457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122078648d591f14f6684d2f67a2c353c002904ebf0d6979cbd89c940967e8295e1f64736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000fa

-----Decoded View---------------
Arg [0] : _snipeBlockAmt (uint256): 2
Arg [1] : _gasPriceLimit (uint256): 250

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000fa


Deployed Bytecode Sourcemap

20653:28075:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33405:110;;;;;;;;;;-1:-1:-1;33405:110:0;;;;;:::i;:::-;;:::i;:::-;;30964:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22446:35;;;;;;;;;;-1:-1:-1;22446:35:0;;;;-1:-1:-1;;;;;22446:35:0;;;;;;-1:-1:-1;;;;;4113:32:1;;;4095:51;;4083:2;4068:18;22446:35:0;3949:203:1;34891:135:0;;;;;;;;;;-1:-1:-1;34891:135:0;;;;;:::i;:::-;;:::i;31658:161::-;;;;;;;;;;-1:-1:-1;31658:161:0;;;;;:::i;:::-;;:::i;:::-;;;4934:14:1;;4927:22;4909:41;;4897:2;4882:18;31658:161:0;4769:187:1;34796:87:0;;;;;;;;;;-1:-1:-1;34865:10:0;;34796:87;;;13366:25:1;;;13354:2;13339:18;34796:87:0;13220:177:1;21755:32:0;;;;;;;;;;;;;;;;30699:83;;;;;;;;;;-1:-1:-1;30772:7:0;;30699:83;;22147:34;;;;;;;;;;;;;;;;31827:313;;;;;;;;;;-1:-1:-1;31827:313:0;;;;;:::i;:::-;;:::i;34009:219::-;;;;;;;;;;-1:-1:-1;34009:219:0;;;;;:::i;:::-;;:::i;36201:253::-;;;;;;;;;;-1:-1:-1;36201:253:0;;;;;:::i;:::-;;:::i;30788:80::-;;;;;;;;;;-1:-1:-1;30856:9:0;;30788:80;;30856:9;;;;14853:36:1;;14841:2;14826:18;30788:80:0;14711:184:1;36917:479:0;;;;;;;;;;-1:-1:-1;36917:479:0;;;;;:::i;:::-;;:::i;32148:218::-;;;;;;;;;;-1:-1:-1;32148:218:0;;;;;:::i;:::-;;:::i;35372:377::-;;;;;;;;;;-1:-1:-1;35372:377:0;;;;;:::i;:::-;;:::i;33787:214::-;;;;;;;;;;-1:-1:-1;33787:214:0;;;;;:::i;:::-;;:::i;34553:111::-;;;;;;;;;;-1:-1:-1;34553:111:0;;;;;:::i;:::-;;:::i;22488:21::-;;;;;;;;;;-1:-1:-1;22488:21:0;;;;-1:-1:-1;;;;;22488:21:0;;;35757:436;;;;;;;;;;-1:-1:-1;35757:436:0;;;;;:::i;:::-;;:::i;33657:122::-;;;;;;;;;;-1:-1:-1;33657:122:0;;;;;:::i;:::-;;:::i;22838:41::-;;;;;;;;;;-1:-1:-1;22838:41:0;;;;-1:-1:-1;;;22838:41:0;;;;;;23878:36;;;;;;;;;;-1:-1:-1;23878:36:0;;;;;;;;;;;36462:447;;;;;;;;;;-1:-1:-1;36462:447:0;;;;;:::i;:::-;;:::i;32779:123::-;;;;;;;;;;-1:-1:-1;32779:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;32867:27:0;32843:4;32867:27;;;:18;:27;;;;;;;;;32779:123;34236:130;;;;;;;;;;-1:-1:-1;34236:130:0;;;;;:::i;:::-;;:::i;23182:77::-;;;;;;;;;;;;;;;;21949:34;;;;;;;;;;;;;;;;31277:198;;;;;;;;;;-1:-1:-1;31277:198:0;;;;;:::i;:::-;;:::i;22625:71::-;;;;;;;;;;-1:-1:-1;22625:71:0;;;;-1:-1:-1;;;;;22625:71:0;;;20230:148;;;;;;;;;;;;;:::i;32651:120::-;;;;;;;;;;-1:-1:-1;32651:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;32743:20:0;32719:4;32743:20;;;:11;:20;;;;;;;;;32651:120;31050:80;;;;;;;;;;-1:-1:-1;31102:7:0;20081:6;-1:-1:-1;;;;;20081:6:0;31050:80;;33527:122;;;;;;;;;;-1:-1:-1;33527:122:0;;;;;:::i;:::-;;:::i;30874:84::-;;;;;;;;;;;;;:::i;32374:269::-;;;;;;;;;;-1:-1:-1;32374:269:0;;;;;:::i;:::-;;:::i;31483:167::-;;;;;;;;;;-1:-1:-1;31483:167:0;;;;;:::i;:::-;;:::i;33175:218::-;;;;;;;;;;-1:-1:-1;33175:218:0;;;;;:::i;:::-;;:::i;34374:171::-;;;;;;;;;;-1:-1:-1;34374:171:0;;;;;:::i;:::-;;:::i;31136:133::-;;;;;;;;;;-1:-1:-1;31136:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;31238:19:0;;;31220:7;31238:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;31136:133;24045:32;;;;;;;;;;;;;;;;34676:112;;;;;;;;;;-1:-1:-1;34676:112:0;;;;;:::i;:::-;;:::i;33034:133::-;;;;;;;;;;-1:-1:-1;33034:133:0;;;;;:::i;:::-;;:::i;20386:254::-;;;;;;;;;;-1:-1:-1;20386:254:0;;;;;:::i;:::-;;:::i;23607:87::-;;;;;;;;;;;;;;;;32910:116;;;;;;;;;;-1:-1:-1;32910:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;32995:23:0;32971:4;32995:23;;;:14;:23;;;;;;;;;32910:116;33405:110;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;;;;;;;;;33483:11:::1;:24:::0;33405:110::o;30964:80::-;31012:13;31036:5;31029:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30964:80;:::o;34891:135::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;34975:3:::1;34968;:10;;34960:19;;;::::0;::::1;;35006:12;:3:::0;35012:6:::1;35006:12;:::i;:::-;34990:13;:28:::0;-1:-1:-1;34891:135:0:o;31658:161::-;31733:4;31750:39;331:10;31773:7;31782:6;31750:8;:39::i;:::-;-1:-1:-1;31807:4:0;31658:161;;;;;:::o;31827:313::-;31925:4;31942:36;31952:6;31960:9;31971:6;31942:9;:36::i;:::-;31989:121;31998:6;331:10;32020:89;32058:6;32020:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32020:19:0;;;;;;:11;:19;;;;;;;;331:10;32020:33;;;;;;;;;;:37;:89::i;:::-;31989:8;:121::i;:::-;-1:-1:-1;32128:4:0;31827:313;;;;;:::o;34009:219::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;34118:33:::1;34143:7;34118:20;34130:7;34118;;:11;;:20;;;;:::i;:::-;:24:::0;::::1;:33::i;:::-;34101:14;:50:::0;34180:14:::1;::::0;:40:::1;::::0;34212:7;;34180:27:::1;::::0;34199:7;34180:18:::1;:27::i;:40::-;34162:15;:58:::0;-1:-1:-1;;34009:219:0:o;36201:253::-;36267:7;36306;;36295;:18;;36287:73;;;;-1:-1:-1;;;36287:73:0;;6404:2:1;36287:73:0;;;6386:21:1;6443:2;6423:18;;;6416:30;6482:34;6462:18;;;6455:62;-1:-1:-1;;;6533:18:1;;;6526:40;6583:19;;36287:73:0;6202:406:1;36287:73:0;36371:19;36394:10;:8;:10::i;:::-;36371:33;-1:-1:-1;36422:24:0;:7;36371:33;36422:11;:24::i;:::-;36415:31;36201:253;-1:-1:-1;;;36201:253:0:o;36917:479::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36999:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36991:60;;;::::0;-1:-1:-1;;;36991:60:0;;8791:2:1;36991:60:0::1;::::0;::::1;8773:21:1::0;8830:2;8810:18;;;8803:30;8869:29;8849:18;;;8842:57;8916:18;;36991:60:0::1;8589:351:1::0;36991:60:0::1;37067:9;37062:327;37086:9;:16:::0;37082:20;::::1;37062:327;;;37144:7;-1:-1:-1::0;;;;;37128:23:0::1;:9;37138:1;37128:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;37128:12:0::1;:23;37124:254;;;37187:9;37197:16:::0;;:20:::1;::::0;37216:1:::1;::::0;37197:20:::1;:::i;:::-;37187:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;37172:9:::1;:12:::0;;-1:-1:-1;;;;;37187:31:0;;::::1;::::0;37182:1;;37172:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;37172:46:0::1;-1:-1:-1::0;;;;;37172:46:0;;::::1;;::::0;;37237:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;37276:11:::1;:20:::0;;;;:28;;-1:-1:-1;;37276:28:0::1;::::0;;37323:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;37323:15:0;;;;;-1:-1:-1;;;;;;37323:15:0::1;::::0;;;;;37062:327:::1;36917:479:::0;:::o;37124:254::-:1;37104:3:::0;::::1;::::0;::::1;:::i;:::-;;;;37062:327;;;;36917:479:::0;:::o;32148:218::-;331:10;32236:4;32285:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32285:34:0;;;;;;;;;;32236:4;;32253:83;;32276:7;;32285:50;;32324:10;32285:38;:50::i;35372:377::-;331:10;35424:14;35473:19;;;:11;:19;;;;;;;;35472:20;35464:77;;;;-1:-1:-1;;;35464:77:0;;13009:2:1;35464:77:0;;;12991:21:1;13048:2;13028:18;;;13021:30;13087:34;13067:18;;;13060:62;-1:-1:-1;;;13138:18:1;;;13131:42;13190:19;;35464:77:0;12807:408:1;35464:77:0;35553:15;35577:19;35588:7;35577:10;:19::i;:::-;-1:-1:-1;;;;;;;;;35625:15:0;;;;;;:7;:15;;;;;;35552:44;;-1:-1:-1;35625:28:0;;:15;-1:-1:-1;35552:44:0;35625:19;:28::i;:::-;-1:-1:-1;;;;;35607:15:0;;;;;;:7;:15;;;;;:46;35674:7;;:20;;35686:7;35674:11;:20::i;:::-;35664:7;:30;35718:10;;:23;;35733:7;35718:14;:23::i;:::-;35705:10;:36;-1:-1:-1;;;35372:377:0:o;33787:214::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;33893:33:::1;33918:7;33893:20;33905:7;33893;;:11;;:20;;;;:::i;:33::-;33878:12;:48:::0;33953:14:::1;::::0;:40:::1;::::0;33985:7;;33953:27:::1;::::0;33972:7;33953:18:::1;:27::i;:40::-;33937:13;:56:::0;-1:-1:-1;;33787:214:0:o;34553:111::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34622:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34622:34:0::1;34652:4;34622:34;::::0;;34553:111::o;35757:436::-;35847:7;35886;;35875;:18;;35867:62;;;;-1:-1:-1;;;35867:62:0;;9500:2:1;35867:62:0;;;9482:21:1;9539:2;9519:18;;;9512:30;9578:33;9558:18;;;9551:61;9629:18;;35867:62:0;9298:355:1;35867:62:0;35945:17;35940:246;;35980:15;36004:19;36015:7;36004:10;:19::i;:::-;-1:-1:-1;35979:44:0;;-1:-1:-1;36038:14:0;;-1:-1:-1;;;;;36038:14:0;35940:246;36087:23;36118:19;36129:7;36118:10;:19::i;:::-;-1:-1:-1;36085:52:0;;-1:-1:-1;36152:22:0;;-1:-1:-1;;;;;36152:22:0;33657:122;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;33743:13:::1;:28:::0;33657:122::o;36462:447::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36659:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36658:21;36650:61;;;::::0;-1:-1:-1;;;36650:61:0;;8791:2:1;36650:61:0::1;::::0;::::1;8773:21:1::0;8830:2;8810:18;;;8803:30;8869:29;8849:18;;;8842:57;8916:18;;36650:61:0::1;8589:351:1::0;36650:61:0::1;-1:-1:-1::0;;;;;36725:16:0;::::1;36744:1;36725:16:::0;;;:7:::1;:16;::::0;;;;;:20;36722:108:::1;;-1:-1:-1::0;;;;;36801:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36781:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36762:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36722:108:::1;-1:-1:-1::0;;;;;36840:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36840:27:0::1;36863:4;36840:27:::0;;::::1;::::0;;;36878:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36878:23:0::1;::::0;;::::1;::::0;;36462:447::o;34236:130::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;34321:16:::1;:37:::0;;-1:-1:-1;;;;;;34321:37:0::1;-1:-1:-1::0;;;;;34321:37:0;;;::::1;::::0;;;::::1;::::0;;34236:130::o;31277:198::-;-1:-1:-1;;;;;31367:20:0;;31343:7;31367:20;;;:11;:20;;;;;;;;31363:49;;;-1:-1:-1;;;;;;31396:16:0;;;;;:7;:16;;;;;;;31277:198::o;31363:49::-;-1:-1:-1;;;;;31450:16:0;;;;;;:7;:16;;;;;;31430:37;;:19;:37::i;20230:148::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;20337:1:::1;20321:6:::0;;20300:40:::1;::::0;-1:-1:-1;;;;;20321:6:0;;::::1;::::0;20300:40:::1;::::0;20337:1;;20300:40:::1;20368:1;20351:19:::0;;-1:-1:-1;;;;;;20351:19:0::1;::::0;;20230:148::o;33527:122::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;33613:13:::1;:28:::0;33527:122::o;30874:84::-;30924:13;30948:7;30941:14;;;;;:::i;32374:269::-;32467:4;32484:129;331:10;32507:7;32516:96;32555:15;32516:96;;;;;;;;;;;;;;;;;331:10;32516:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32516:34:0;;;;;;;;;;;;:38;:96::i;31483:167::-;31561:4;31578:42;331:10;31602:9;31613:6;31578:9;:42::i;33175:218::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;33284:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;33284:28:0;;::::1;;::::0;;33323:14:::1;:24:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;33358:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;33175:218::o;34374:171::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;34451:21:::1;:32:::0;;-1:-1:-1;;;;34451:32:0::1;-1:-1:-1::0;;;34451:32:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;34499:38:::1;::::0;4909:41:1;;;34499:38:0::1;::::0;4882:18:1;34499:38:0::1;;;;;;;34374:171:::0;:::o;34676:112::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34745:27:0::1;34775:5;34745:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;34745:35:0::1;::::0;;34676:112::o;33034:133::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33126:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;33126:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33034:133::o;20386:254::-;20143:6;;-1:-1:-1;;;;;20143:6:0;331:10;20143:22;20135:67;;;;-1:-1:-1;;;20135:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20475:22:0;::::1;20467:73;;;::::0;-1:-1:-1;;;20467:73:0;;6815:2:1;20467:73:0::1;::::0;::::1;6797:21:1::0;6854:2;6834:18;;;6827:30;6893:34;6873:18;;;6866:62;-1:-1:-1;;;6944:18:1;;;6937:36;6990:19;;20467:73:0::1;6613:402:1::0;20467:73:0::1;20587:6;::::0;;20566:38:::1;::::0;-1:-1:-1;;;;;20566:38:0;;::::1;::::0;20587:6;::::1;::::0;20566:38:::1;::::0;::::1;20615:6;:17:::0;;-1:-1:-1;;;;;;20615:17:0::1;-1:-1:-1::0;;;;;20615:17:0;;;::::1;::::0;;;::::1;::::0;;20386:254::o;37496:337::-;-1:-1:-1;;;;;37589:19:0;;37581:68;;;;-1:-1:-1;;;37581:68:0;;12604:2:1;37581:68:0;;;12586:21:1;12643:2;12623:18;;;12616:30;12682:34;12662:18;;;12655:62;-1:-1:-1;;;12733:18:1;;;12726:34;12777:19;;37581:68:0;12402:400:1;37581:68:0;-1:-1:-1;;;;;37668:21:0;;37660:68;;;;-1:-1:-1;;;37660:68:0;;7222:2:1;37660:68:0;;;7204:21:1;7261:2;7241:18;;;7234:30;7300:34;7280:18;;;7273:62;-1:-1:-1;;;7351:18:1;;;7344:32;7393:19;;37660:68:0;7020:398:1;37660:68:0;-1:-1:-1;;;;;37741:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;37793:32;;13366:25:1;;;37793:32:0;;13339:18:1;37793:32:0;;;;;;;37496:337;;;:::o;37841:2045::-;-1:-1:-1;;;;;37963:18:0;;37955:68;;;;-1:-1:-1;;;37955:68:0;;12198:2:1;37955:68:0;;;12180:21:1;12237:2;12217:18;;;12210:30;12276:34;12256:18;;;12249:62;-1:-1:-1;;;12327:18:1;;;12320:35;12372:19;;37955:68:0;11996:401:1;37955:68:0;-1:-1:-1;;;;;38042:16:0;;38034:64;;;;-1:-1:-1;;;38034:64:0;;6000:2:1;38034:64:0;;;5982:21:1;6039:2;6019:18;;;6012:30;6078:34;6058:18;;;6051:62;-1:-1:-1;;;6129:18:1;;;6122:33;6172:19;;38034:64:0;5798:399:1;38034:64:0;38126:1;38117:6;:10;38109:64;;;;-1:-1:-1;;;38109:64:0;;11443:2:1;38109:64:0;;;11425:21:1;11482:2;11462:18;;;11455:30;11521:34;11501:18;;;11494:62;-1:-1:-1;;;11572:18:1;;;11565:39;11621:19;;38109:64:0;11241:405:1;38109:64:0;38188:14;;;;38184:112;;;38242:13;;38227:11;:28;;38219:65;;;;-1:-1:-1;;;38219:65:0;;9147:2:1;38219:65:0;;;9129:21:1;9186:2;9166:18;;;9159:30;9225:26;9205:18;;;9198:54;9269:18;;38219:65:0;8945:348:1;38219:65:0;38309:20;38320:4;38326:2;38309:10;:20::i;:::-;38306:752;;;38350:15;;;;38346:348;;;38398:6;;-1:-1:-1;;;;;38390:14:0;;;38398:6;;38390:14;38386:293;;;-1:-1:-1;;;;;38436:13:0;;;;;;:9;:13;;;;;;38453:12;38436:29;;38428:38;;;;;;-1:-1:-1;;;;;38489:13:0;;;;;;:9;:13;;;;;38505:12;38489:28;;38386:293;;;-1:-1:-1;;;;;38574:15:0;;;;;;:9;:15;;;;;;38593:12;38574:31;;38566:40;;;;;;-1:-1:-1;;;;;38629:15:0;;;;;;:9;:15;;;;;38647:12;38629:30;;38386:293;38726:12;;38716:6;:22;;38708:75;;;;-1:-1:-1;;;38708:75:0;;9860:2:1;38708:75:0;;;9842:21:1;9899:2;9879:18;;;9872:30;9938:34;9918:18;;;9911:62;-1:-1:-1;;;9989:18:1;;;9982:38;10037:19;;38708:75:0;9658:404:1;38708:75:0;38807:14;;-1:-1:-1;;;;;38801:20:0;;;38807:14;;38801:20;;;;:36;;-1:-1:-1;38831:6:0;;-1:-1:-1;;;;;38825:12:0;;;38831:6;;38825:12;;38801:36;38798:249;;;38858:32;38893:13;38903:2;38893:9;:13::i;:::-;38970:14;;38858:48;;-1:-1:-1;38933:33:0;38960:6;38858:48;38933:33;:::i;:::-;:51;;38925:106;;;;-1:-1:-1;;;38925:106:0;;10269:2:1;38925:106:0;;;10251:21:1;10308:2;10288:18;;;10281:30;10347:34;10327:18;;;10320:62;-1:-1:-1;;;10398:18:1;;;10391:40;10448:19;;38925:106:0;10067:406:1;38925:106:0;38839:208;38798:249;39072:28;39103:24;39121:4;39103:9;:24::i;:::-;39072:55;;39175:12;;39151:20;:36;39148:112;;-1:-1:-1;39236:12:0;;39148:112;39331:29;;39376:16;;39307:53;;;;;-1:-1:-1;;;39376:16:0;;;;39375:17;:46;;;;-1:-1:-1;39415:6:0;;-1:-1:-1;;;;;39409:12:0;;;39415:6;;39409:12;39375:46;:84;;;;-1:-1:-1;39438:21:0;;-1:-1:-1;;;39438:21:0;;;;39375:84;39371:293;;;39490:19;39486:167;;;39553:29;;39530:52;;39601:36;39616:20;39601:14;:36::i;:::-;-1:-1:-1;;;;;39727:24:0;;39684:12;39727:24;;;:18;:24;;;;;;39699:4;;39727:24;;;:50;;-1:-1:-1;;;;;;39755:22:0;;;;;;:18;:22;;;;;;;;39727:50;39724:96;;;-1:-1:-1;39803:5:0;39724:96;39840:38;39855:4;39860:2;39863:6;39870:7;39840:14;:38::i;:::-;37944:1942;;;37841:2045;;;:::o;5294:192::-;5380:7;5416:12;5408:6;;;;5400:29;;;;-1:-1:-1;;;5400:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5440:9:0;5452:5;5456:1;5452;:5;:::i;:::-;5440:17;5294:192;-1:-1:-1;;;;;5294:192:0:o;5745:463::-;5803:7;6040:6;6036:47;;-1:-1:-1;6070:1:0;6063:8;;6036:47;6095:9;6107:5;6111:1;6107;:5;:::i;:::-;6095:17;-1:-1:-1;6140:1:0;6131:5;6135:1;6095:17;6131:5;:::i;:::-;:10;6123:56;;;;-1:-1:-1;;;6123:56:0;;10680:2:1;6123:56:0;;;10662:21:1;10719:2;10699:18;;;10692:30;10758:34;10738:18;;;10731:62;-1:-1:-1;;;10809:18:1;;;10802:31;10850:19;;6123:56:0;10478:397:1;6684:132:0;6742:7;6769:39;6773:1;6776;6769:39;;;;;;;;;;;;;;;;;:3;:39::i;46488:163::-;46529:7;46550:15;46567;46586:19;:17;:19::i;:::-;46549:56;;-1:-1:-1;46549:56:0;-1:-1:-1;46623:20:0;46549:56;;46623:11;:20::i;:::-;46616:27;;;;46488:163;:::o;4391:181::-;4449:7;;4481:5;4485:1;4481;:5;:::i;:::-;4469:17;;4510:1;4505;:6;;4497:46;;;;-1:-1:-1;;;4497:46:0;;8029:2:1;4497:46:0;;;8011:21:1;8068:2;8048:18;;;8041:30;8107:29;8087:18;;;8080:57;8154:18;;4497:46:0;7827:351:1;45284:419:0;45343:7;45352;45361;45370;45379;45388;45409:23;45434:12;45448:18;45470:20;45482:7;45470:11;:20::i;:::-;45408:82;;;;;;45502:15;45519:23;45544:12;45560:50;45572:7;45581:4;45587:10;45599;:8;:10::i;:::-;45560:11;:50::i;:::-;45501:109;;;;-1:-1:-1;45501:109:0;;-1:-1:-1;45661:15:0;;-1:-1:-1;45678:4:0;;-1:-1:-1;45684:10:0;;-1:-1:-1;45284:419:0;;-1:-1:-1;;;;;45284:419:0:o;4855:136::-;4913:7;4940:43;4944:1;4947;4940:43;;;;;;;;;;;;;;;;;:3;:43::i;35034:330::-;35102:4;20081:6;;-1:-1:-1;;;;;35126:15:0;;;20081:6;;35126:15;;;;:45;;-1:-1:-1;20054:7:0;20081:6;-1:-1:-1;;;;;35158:13:0;;;20081:6;;35158:13;;35126:45;:84;;;;-1:-1:-1;;;;;;35189:21:0;;;;;;:17;:21;;;;;;;;35188:22;35126:84;:125;;;;-1:-1:-1;;;;;;35228:23:0;;;;;;:17;:23;;;;;;;;35227:24;35126:125;:159;;;;-1:-1:-1;35274:11:0;;-1:-1:-1;;;;;35268:17:0;;;35274:11;;35268:17;;35126:159;:192;;;;-1:-1:-1;;;;;;35302:16:0;;;;35126:192;:230;;;;-1:-1:-1;;;;;;;;35335:21:0;35351:4;35335:21;;;35034:330::o;39894:1315::-;24551:16;:23;;-1:-1:-1;;;;24551:23:0;-1:-1:-1;;;24551:23:0;;;39999:13:::1;::::0;39983::::1;::::0;:29:::1;::::0;39999:13;39983:29:::1;:::i;:::-;39979:60;;40032:7;;39979:60;40049:19;40071:77;40115:32;40133:13;;40115;;:17;;:32;;;;:::i;:::-;40096:13;::::0;40071:39:::1;::::0;:20;;:24:::1;:39::i;:77::-;40049:99:::0;-1:-1:-1;40159:17:0::1;40179:37;:20:::0;40049:99;40179:24:::1;:37::i;:::-;40159:57:::0;-1:-1:-1;40280:12:0::1;40295:16;40159:57:::0;40309:1:::1;40295:13;:16::i;:::-;40280:31:::0;-1:-1:-1;40322:17:0::1;40342:19;:9:::0;40280:31;40342:13:::1;:19::i;:::-;40322:39:::0;-1:-1:-1;40664:21:0::1;40639:22;40753:21;:4:::0;40762:11;40753:8:::1;:21::i;:::-;40730:44;;40785:30;40802:12;40785:16;:30::i;:::-;40876:16;40895:41;:21;40921:14:::0;40895:25:::1;:41::i;:::-;40876:60:::0;-1:-1:-1;40947:24:0::1;40974:36;40997:12:::0;40974:18:::1;40876:60:::0;40987:4;40974:12:::1;:18::i;:36::-;40947:63;;41023:41;41036:9;41047:16;41023:12;:41::i;:::-;41082:49;::::0;;14589:25:1;;;14645:2;14630:18;;14623:34;;;14673:18;;;14666:34;;;41082:49:0::1;::::0;14577:2:1;14562:18;41082:49:0::1;;;;;;;41144:16;::::0;-1:-1:-1;;;;;41144:16:0::1;:57;41170:30;:8:::0;41183:16;41170:12:::1;:30::i;:::-;41144:57;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;39968:1241;;;;;;;;24585:1;-1:-1:-1::0;24597:16:0;:24;;-1:-1:-1;;;;24597:24:0;;;39894:1315::o;42872:1318::-;43032:16;;;;43028:984;;;-1:-1:-1;;;;;32995:23:0;;32971:4;32995:23;;;:14;:23;;;;;;;;43136:40;;;-1:-1:-1;;;;;;32995:23:0;;32971:4;32995:23;;;:14;:23;;;;;;;;43159:17;43132:107;;;43197:26;;-1:-1:-1;;;43197:26:0;;11853:2:1;43197:26:0;;;11835:21:1;11892:2;11872:18;;;11865:30;-1:-1:-1;;;11911:18:1;;;11904:46;11967:18;;43197:26:0;11651:340:1;43132:107:0;43329:16;;;;;;;43324:677;;43366:28;43385:4;43391:2;43366:18;:28::i;:::-;43422:16;;;;;;;43421:17;:41;;;;;43442:20;43453:4;43459:2;43442:10;:20::i;:::-;43417:145;;;43491:47;;-1:-1:-1;;;43491:47:0;;8385:2:1;43491:47:0;;;8367:21:1;8424:2;8404:18;;;8397:30;8463:34;8443:18;;;8436:62;-1:-1:-1;;;8514:18:1;;;8507:35;8559:19;;43491:47:0;8183:401:1;43417:145:0;43324:677;;;43621:1;43606:12;;:16;:56;;;;-1:-1:-1;43656:6:0;;-1:-1:-1;;;;;43648:14:0;;;43656:6;;43648:14;43606:56;:102;;;;;43688:20;43699:4;43705:2;43688:10;:20::i;:::-;43602:384;;;43785:13;43770:12;;43755;:27;;;;:::i;:::-;:43;43751:216;;;-1:-1:-1;;;;;43827:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;43827:25:0;43848:4;43827:25;;;43879:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;43927:16:0;;-1:-1:-1;;;;;4113:32:1;;4095:51;;43927:16:0;;4083:2:1;4068:18;43927:16:0;;;;;;;43751:216;44028:7;44024:40;;44050:14;:12;:14::i;:::-;44085:35;44103:4;44109:2;44113:6;44085:17;:35::i;:::-;44145:7;44141:41;;44167:15;48602:19;;48588:11;:33;48648:21;;48632:13;:37;48696:21;;48680:13;:37;48544:181;44167:15;42872:1318;;;;:::o;7313:278::-;7399:7;7434:12;7427:5;7419:28;;;;-1:-1:-1;;;7419:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7458:9:0;7470:5;7474:1;7470;:5;:::i;46659:561::-;46756:7;;46792;;46709;;;;;46816:289;46840:9;:16;46836:20;;46816:289;;;46906:7;46882;:21;46890:9;46900:1;46890:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46890:12:0;46882:21;;;;;;;;;;;;;:31;;:66;;;46941:7;46917;:21;46925:9;46935:1;46925:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46925:12:0;46917:21;;;;;;;;;;;;;:31;46882:66;46878:97;;;46958:7;;46967;;46950:25;;;;;;;46659:561;;:::o;46878:97::-;47000:34;47012:7;:21;47020:9;47030:1;47020:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;47020:12:0;47012:21;;;;;;;;;;;;;47000:7;;:11;:34::i;:::-;46990:44;;47059:34;47071:7;:21;47079:9;47089:1;47079:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;47079:12:0;47071:21;;;;;;;;;;;;;47059:7;;:11;:34::i;:::-;47049:44;-1:-1:-1;46858:3:0;;;;:::i;:::-;;;;46816:289;;;-1:-1:-1;47141:7:0;;47129;;:20;;:11;:20::i;:::-;47119:7;:30;47115:61;;;47159:7;;47168;;47151:25;;;;;;46659:561;;:::o;47115:61::-;47195:7;;47204;;-1:-1:-1;46659:561:0;-1:-1:-1;46659:561:0:o;45711:330::-;45771:7;45780;45789;45809:12;45824:24;45840:7;45824:15;:24::i;:::-;45809:39;;45859:18;45880:30;45902:7;45880:21;:30::i;:::-;45859:51;-1:-1:-1;45921:23:0;45947:33;45859:51;45947:17;:7;45959:4;45947:11;:17::i;:::-;:21;;:33::i;:::-;45921:59;46016:4;;-1:-1:-1;46022:10:0;;-1:-1:-1;45711:330:0;;-1:-1:-1;;;45711:330:0:o;46049:429::-;46164:7;;;;46220:24;:7;46232:11;46220;:24::i;:::-;46202:42;-1:-1:-1;46255:12:0;46270:21;:4;46279:11;46270:8;:21::i;:::-;46255:36;-1:-1:-1;46302:18:0;46323:27;:10;46338:11;46323:14;:27::i;:::-;46302:48;-1:-1:-1;46361:23:0;46387:33;46302:48;46387:17;:7;46399:4;46387:11;:17::i;:33::-;46439:7;;;;-1:-1:-1;46465:4:0;;-1:-1:-1;46049:429:0;;-1:-1:-1;;;;;;;46049:429:0:o;41217:573::-;41369:16;;;41383:1;41369:16;;;;;;;;41345:21;;41369:16;;;;;;;;;;-1:-1:-1;41369:16:0;41345:40;;41414:4;41396;41401:1;41396:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41396:23:0;;;:7;;;;;;;;;;:23;;;;41440:9;;:16;;;-1:-1:-1;;;41440:16:0;;;;:9;;;;;:14;;:16;;;;;41396:7;;41440:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41430:4;41435:1;41430:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41430:26:0;;;:7;;;;;;;;;:26;41501:9;;41469:56;;41486:4;;41501:9;41513:11;41469:8;:56::i;:::-;41564:9;;:218;;-1:-1:-1;;;41564:218:0;;-1:-1:-1;;;;;41564:9:0;;;;:60;;:218;;41639:11;;41564:9;;41709:4;;41736;;41756:15;;41564:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41798:505;41978:9;;41946:56;;41963:4;;-1:-1:-1;;;;;41978:9:0;41990:11;41946:8;:56::i;:::-;42045:9;;42243:11;;42045:250;;-1:-1:-1;;;42045:250:0;;42111:4;42045:250;;;4498:34:1;4548:18;;;4541:34;;;42045:9:0;4591:18:1;;;4584:34;;;4634:18;;;4627:34;-1:-1:-1;;;;;42243:11:0;;;4677:19:1;;;4670:44;42269:15:0;4730:19:1;;;4723:35;42045:9:0;;;:25;;42078:9;;4432:19:1;;42045:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;41798:505;;:::o;42311:480::-;42393:16;;;;;;;42392:17;42384:65;;;;-1:-1:-1;;;42384:65:0;;7625:2:1;42384:65:0;;;7607:21:1;7664:2;7644:18;;;7637:30;7703:34;7683:18;;;7676:62;-1:-1:-1;;;7754:18:1;;;7747:33;7797:19;;42384:65:0;7423:399:1;42384:65:0;42465:20;42476:4;42482:2;42465:10;:20::i;:::-;42464:21;:37;;;;-1:-1:-1;42495:6:0;;-1:-1:-1;;;;;42489:12:0;;;42495:6;;42489:12;42464:37;42460:324;;;-1:-1:-1;;;;;42518:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;42518:30:0;42544:4;42518:30;;;;;;42563:16;:23;;-1:-1:-1;;42563:23:0;42518:30;42563:23;;;42616:12;42601;:27;42658:15;42643:12;:30;42690:28;;-1:-1:-1;;;;42690:28:0;-1:-1:-1;;;42690:28:0;;;42738:34;;4909:41:1;;;42738:34:0;;4882:18:1;42738:34:0;;;;;;;42311:480;;:::o;48198:334::-;48244:11;;:16;:38;;;;-1:-1:-1;48264:13:0;;:18;48244:38;48241:50;;;48198:334::o;48241:50::-;48333:11;;;48311:19;:33;48379:13;;;48355:21;:37;48427:13;;;48403:21;:37;-1:-1:-1;48453:15:0;;;;48479:17;;;;48507;48198:334::o;44198:1078::-;44297:15;44314:23;44339:12;44353:23;44378:12;44392:18;44414:19;44425:7;44414:10;:19::i;:::-;-1:-1:-1;;;;;44464:15:0;;;;;;:7;:15;;;;;;44296:137;;-1:-1:-1;44296:137:0;;-1:-1:-1;44296:137:0;;-1:-1:-1;44296:137:0;-1:-1:-1;44296:137:0;-1:-1:-1;44296:137:0;-1:-1:-1;44464:28:0;;44296:137;44464:19;:28::i;:::-;-1:-1:-1;;;;;44446:15:0;;;;;;;:7;:15;;;;;;:46;;;;44524:18;;;;;;;:39;;44547:15;44524:22;:39::i;:::-;-1:-1:-1;;;;;44503:18:0;;;;;;;:7;:18;;;;;;;;:60;;;;44580:19;;;;;:11;:19;;;;;;;:46;;;;-1:-1:-1;;;;;;44604:22:0;;;;;;:11;:22;;;;;;;;44603:23;44580:46;44576:477;;;-1:-1:-1;;;;;44661:15:0;;;;;;:7;:15;;;;;;:28;;44681:7;44661:19;:28::i;:::-;-1:-1:-1;;;;;44643:15:0;;;;;;:7;:15;;;;;:46;44576:477;;;-1:-1:-1;;;;;44712:19:0;;;;;;:11;:19;;;;;;;;44711:20;:46;;;;-1:-1:-1;;;;;;44735:22:0;;;;;;:11;:22;;;;;;;;44711:46;44707:346;;;-1:-1:-1;;;;;44795:18:0;;;;;;:7;:18;;;;;;:39;;44818:15;44795:22;:39::i;:::-;-1:-1:-1;;;;;44774:18:0;;;;;;:7;:18;;;;;:60;44707:346;;;-1:-1:-1;;;;;44858:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;44881:22:0;;;;;;:11;:22;;;;;;;;44858:45;44854:199;;;-1:-1:-1;;;;;44938:15:0;;;;;;:7;:15;;;;;;:28;;44958:7;44938:19;:28::i;:::-;-1:-1:-1;;;;;44920:15:0;;;;;;;:7;:15;;;;;;:46;;;;45002:18;;;;;;;:39;;45025:15;45002:22;:39::i;:::-;-1:-1:-1;;;;;44981:18:0;;;;;;:7;:18;;;;;:60;44854:199;45069:14;;45065:67;;45098:34;45113:6;45121:10;45098:14;:34::i;:::-;45154:1;45147:4;:8;:20;;;;45166:1;45159:4;:8;45147:20;45143:63;;;45182:24;45195:4;45201;45182:12;:24::i;:::-;45241:9;-1:-1:-1;;;;;45224:44:0;45233:6;-1:-1:-1;;;;;45224:44:0;;45252:15;45224:44;;;;13366:25:1;;13354:2;13339:18;;13220:177;45224:44:0;;;;;;;;44285:991;;;;;;44198:1078;;;:::o;47865:145::-;47929:7;47956:46;47985:16;;47956:24;47968:11;;47956:7;:11;;:24;;;;:::i;48018:172::-;48088:7;48115:67;48165:16;;48115:45;48127:32;48145:13;;48127;;:17;;:32;;;;:::i;:::-;48115:7;;:11;:45::i;47388:469::-;47467:19;47490:10;:8;:10::i;:::-;47467:33;-1:-1:-1;47511:18:0;47532:27;:10;47467:33;47532:14;:27::i;:::-;47611:4;47595:22;;;;:7;:22;;;;;;47511:48;;-1:-1:-1;47595:38:0;;47511:48;47595:26;:38::i;:::-;47586:4;47570:22;;;;:7;:22;;;;;;;;:63;;;;47647:11;:26;;;;;;47644:107;;;47729:4;47713:22;;;;:7;:22;;;;;;:38;;47740:10;47713:26;:38::i;:::-;47704:4;47688:22;;;;:7;:22;;;;;:63;47644:107;47767:43;;13366:25:1;;;47792:4:0;;-1:-1:-1;;;;;47767:43:0;;;;;13354:2:1;13339:18;47767:43:0;;;;;;;47456:401;;47388:469;;:::o;47228:148::-;47307:7;;:17;;47319:4;47307:11;:17::i;:::-;47297:7;:27;47348:10;;:20;;47363:4;47348:14;:20::i;:::-;47335:10;:33;-1:-1:-1;;47228:148:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;947:388::-;1015:6;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:52;;;1092:1;1089;1082:12;1044:52;1131:9;1118:23;1150:31;1175:5;1150:31;:::i;:::-;1200:5;-1:-1:-1;1257:2:1;1242:18;;1229:32;1270:33;1229:32;1270:33;:::i;:::-;1322:7;1312:17;;;947:388;;;;;:::o;1340:456::-;1417:6;1425;1433;1486:2;1474:9;1465:7;1461:23;1457:32;1454:52;;;1502:1;1499;1492:12;1454:52;1541:9;1528:23;1560:31;1585:5;1560:31;:::i;:::-;1610:5;-1:-1:-1;1667:2:1;1652:18;;1639:32;1680:33;1639:32;1680:33;:::i;:::-;1340:456;;1732:7;;-1:-1:-1;;;1786:2:1;1771:18;;;;1758:32;;1340:456::o;1801:315::-;1866:6;1874;1927:2;1915:9;1906:7;1902:23;1898:32;1895:52;;;1943:1;1940;1933:12;1895:52;1982:9;1969:23;2001:31;2026:5;2001:31;:::i;:::-;2051:5;-1:-1:-1;2075:35:1;2106:2;2091:18;;2075:35;:::i;:::-;2065:45;;1801:315;;;;;:::o;2121:::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:52;;;2266:1;2263;2256:12;2218:52;2305:9;2292:23;2324:31;2349:5;2324:31;:::i;:::-;2374:5;2426:2;2411:18;;;;2398:32;;-1:-1:-1;;;2121:315:1:o;2441:180::-;2497:6;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;2589:26;2605:9;2589:26;:::i;2626:316::-;2694:6;2702;2710;2763:2;2751:9;2742:7;2738:23;2734:32;2731:52;;;2779:1;2776;2769:12;2731:52;2802:26;2818:9;2802:26;:::i;:::-;2792:36;;2847:35;2878:2;2867:9;2863:18;2847:35;:::i;:::-;2837:45;;2901:35;2932:2;2921:9;2917:18;2901:35;:::i;:::-;2891:45;;2626:316;;;;;:::o;2947:180::-;3006:6;3059:2;3047:9;3038:7;3034:23;3030:32;3027:52;;;3075:1;3072;3065:12;3027:52;-1:-1:-1;3098:23:1;;2947:180;-1:-1:-1;2947:180:1:o;3132:248::-;3197:6;3205;3258:2;3246:9;3237:7;3233:23;3229:32;3226:52;;;3274:1;3271;3264:12;3226:52;3310:9;3297:23;3287:33;;3339:35;3370:2;3359:9;3355:18;3339:35;:::i;3385:248::-;3453:6;3461;3514:2;3502:9;3493:7;3489:23;3485:32;3482:52;;;3530:1;3527;3520:12;3482:52;-1:-1:-1;;3553:23:1;;;3623:2;3608:18;;;3595:32;;-1:-1:-1;3385:248:1:o;3638:306::-;3726:6;3734;3742;3795:2;3783:9;3774:7;3770:23;3766:32;3763:52;;;3811:1;3808;3801:12;3763:52;3840:9;3834:16;3824:26;;3890:2;3879:9;3875:18;3869:25;3859:35;;3934:2;3923:9;3919:18;3913:25;3903:35;;3638:306;;;;;:::o;5196:597::-;5308:4;5337:2;5366;5355:9;5348:21;5398:6;5392:13;5441:6;5436:2;5425:9;5421:18;5414:34;5466:1;5476:140;5490:6;5487:1;5484:13;5476:140;;;5585:14;;;5581:23;;5575:30;5551:17;;;5570:2;5547:26;5540:66;5505:10;;5476:140;;;5634:6;5631:1;5628:13;5625:91;;;5704:1;5699:2;5690:6;5679:9;5675:22;5671:31;5664:42;5625:91;-1:-1:-1;5777:2:1;5756:15;-1:-1:-1;;5752:29:1;5737:45;;;;5784:2;5733:54;;5196:597;-1:-1:-1;;;5196:597:1:o;10880:356::-;11082:2;11064:21;;;11101:18;;;11094:30;11160:34;11155:2;11140:18;;11133:62;11227:2;11212:18;;10880:356::o;13402:980::-;13664:4;13712:3;13701:9;13697:19;13743:6;13732:9;13725:25;13769:2;13807:6;13802:2;13791:9;13787:18;13780:34;13850:3;13845:2;13834:9;13830:18;13823:31;13874:6;13909;13903:13;13940:6;13932;13925:22;13978:3;13967:9;13963:19;13956:26;;14017:2;14009:6;14005:15;13991:29;;14038:1;14048:195;14062:6;14059:1;14056:13;14048:195;;;14127:13;;-1:-1:-1;;;;;14123:39:1;14111:52;;14218:15;;;;14183:12;;;;14159:1;14077:9;14048:195;;;-1:-1:-1;;;;;;;14299:32:1;;;;14294:2;14279:18;;14272:60;-1:-1:-1;;;14363:3:1;14348:19;14341:35;14260:3;13402:980;-1:-1:-1;;;13402:980:1:o;14900:128::-;14940:3;14971:1;14967:6;14964:1;14961:13;14958:39;;;14977:18;;:::i;:::-;-1:-1:-1;15013:9:1;;14900:128::o;15033:217::-;15073:1;15099;15089:132;;15143:10;15138:3;15134:20;15131:1;15124:31;15178:4;15175:1;15168:15;15206:4;15203:1;15196:15;15089:132;-1:-1:-1;15235:9:1;;15033:217::o;15255:168::-;15295:7;15361:1;15357;15353:6;15349:14;15346:1;15343:21;15338:1;15331:9;15324:17;15320:45;15317:71;;;15368:18;;:::i;:::-;-1:-1:-1;15408:9:1;;15255:168::o;15428:125::-;15468:4;15496:1;15493;15490:8;15487:34;;;15501:18;;:::i;:::-;-1:-1:-1;15538:9:1;;15428:125::o;15558:380::-;15637:1;15633:12;;;;15680;;;15701:61;;15755:4;15747:6;15743:17;15733:27;;15701:61;15808:2;15800:6;15797:14;15777:18;15774:38;15771:161;;;15854:10;15849:3;15845:20;15842:1;15835:31;15889:4;15886:1;15879:15;15917:4;15914:1;15907:15;15771:161;;15558:380;;;:::o;15943:135::-;15982:3;-1:-1:-1;;16003:17:1;;16000:43;;;16023:18;;:::i;:::-;-1:-1:-1;16070:1:1;16059:13;;15943:135::o;16083:127::-;16144:10;16139:3;16135:20;16132:1;16125:31;16175:4;16172:1;16165:15;16199:4;16196:1;16189:15;16215:127;16276:10;16271:3;16267:20;16264:1;16257:31;16307:4;16304:1;16297:15;16331:4;16328:1;16321:15;16347:127;16408:10;16403:3;16399:20;16396:1;16389:31;16439:4;16436:1;16429:15;16463:4;16460:1;16453:15;16611:131;-1:-1:-1;;;;;16686:31:1;;16676:42;;16666:70;;16732:1;16729;16722:12;16666:70;16611:131;:::o

Swarm Source

ipfs://78648d591f14f6684d2f67a2c353c002904ebf0d6979cbd89c940967e8295e1f
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.