ETH Price: $3,266.74 (+4.60%)
Gas: 2 Gwei

Token

FullMetal Inu (FMA)
 

Overview

Max Total Supply

1,000,000,000,000,000 FMA

Holders

266

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
184,000,000,000 FMA

Value
$0.00
0x0e3d8fff427fdaf8644ed49617554c059aaabb95
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:
FULLMETALINU

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

// SPDX-License-Identifier: MIT


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 FULLMETALINU 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 = "FullMetal Inu";
    string private _symbol = "FMA";
    
    uint256 public _reflectFee = 0; // All taxes are divided by 100 for more accuracy.
    uint256 private _previousReflectFee = _reflectFee;
    uint256 private maxReflectFee = 800;
    
    uint256 public _liquidityFee = 300; // All taxes are divided by 100 for more accuracy.
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private maxLiquidityFee = 800;

    uint256 public _marketingFee = 500; // 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(0x2c97E684751b7bfEf540DA13DEd685d59cF0262A);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    // 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[0x8BF418C4C734F85A8D0b51c37B2d92373906fEb2] = true;
        _isExcluded[0x8BF418C4C734F85A8D0b51c37B2d92373906fEb2] = true;
        _excluded.push(0x8BF418C4C734F85A8D0b51c37B2d92373906fEb2);

        // 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"}]

60a060405266038d7ea4c68000600a908155600b805460ff19166009908117909155600c81905562000031916200113b565b600a54620000409190620011f9565b600d819055620000539060001962001272565b62000061906000196200121b565b600e5560408051808201909152600d8082526c46756c6c4d6574616c20496e7560981b60209092019182526200009a9160109162000fde565b5060408051808201909152600380825262464d4160e81b6020909201918252620000c79160119162000fde565b5060006012819055601355610320601481905561012c601581905560165560178190556101f46018819055601955601a55612710601b55601e80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155601f805490911661dead179055602080547501002c97e684751b7bfef540da13ded685d59cf0262a600161ff0160a01b0319909116179055600560218190556103e86022819055600d5490916200017e91620011f9565b6200018a9190620010db565b602355602354602455602254602154600a54620001a89190620011f9565b620001b49190620010db565b60255560026026556064602755602754602654600d54620001d69190620011f9565b620001e29190620010db565b602855602854602955602754602654600a54620002009190620011f9565b6200020c9190620010db565b602a55612710600d546005620002239190620011f9565b6200022f9190620010db565b602b55602c805461ffff191660019081179091556000602d819055602e819055602f556030805460ff199081168317909155603280549091169091179055604051620041cb388190039081908339810160408190526200028f91620010b6565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5433600090815260026020908152604080832093909355600e5460019091529190205560808290526200030a81633b9aca00620011f9565b603155601e546040805163c45a015560e01b815290516001600160a01b0390921691829163c45a0155916004808301926020929190829003018186803b1580156200035457600080fd5b505afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062001084565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d857600080fd5b505afa158015620003ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000413919062001084565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200045c57600080fd5b505af115801562000471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000497919062001084565b601d80546001600160a01b03199081166001600160a01b0393841617909155601c8054909116918316919091179055600160056000620004df6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080549092166001908117909255600990620005386000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553080825260069384905291812080549094166001908117909455600780548086018255908252600080516020620041ab8339815191520180546001600160a01b031916909217909155620005c06000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556007620005fd6000546001600160a01b031690565b8154600181810184556000938452602080852090920180546001600160a01b039485166001600160a01b031991821617909155601f80548516865260068085526040808820805460ff1990811687179091559254600780548088018255600080516020620041ab83398151915290810180548816938b1693909317909255875489168a52828a208054861688179055875481548089018355830180548816918b16919091179055601d80548a168b52928a20805486168817905591548254808801845582018054871691909916179097557f529eefe1e5d774a562eb2a12edce8c693644d0f28a384da1581c72022e7fa65b805484168617905594527f4205b6112214dc7ea5c82379761089488808c4d061d05b0dc552b06576c0b7df805490911683179055825491820183559190935291018054909116738bf418c4c734f85a8d0b51c37b2d92373906feb217905562000771620007593390565b601e54600d546001600160a01b039091169062000eb2565b60086020527fa4a318a4ba833d535a213782db534d83019119799cafae11f04d1dba93ee7b408054600160ff1991821681179092557f2baaa8ba932e4195b3c3afd7682e52ef9560eb2fbf378948591149dea582df9280548216831790557f194d9d8ead9150018922e8ff214ac528f5d5eb8a25d0a8a20d6d1e0608edb96880548216831790557f2a93823f95923881912000576c000db402f9fee399435451fb800d180562f6c180548216831790557fa4927cac2a2355e3be249733827023d6a2c706d349f9c8a191da7115a133adb380548216831790557f572c1cff4f39bfe5c02b35e67e1f9daf67573dd83097532f1bf3c916ef1f148b80548216831790557fc11af5c998ea12a1db355c70b537d149d00bf62833ca0f979612e1ed18dcd34280548216831790557ff7a0aea07924d7eb2093cd7fd85e58ae58d484252cac9ae10a34e729f359d96580548216831790557fa91d2805f78c999710926e2979a7537bd8bba61da68d9c1cda9e992b08b4bde180548216831790557f065e105164aadb36980a413983778e0b966c42990add8f4ba1160d7666f74b6f80548216831790557f617196ff965aab37362edb604766d4cb4046c3557c4449d7941fafd28b187baa80548216831790557faba174d6d1a7905fcdb3560b3d391e612168814a8e0200ab304f4d2fe03d6b6a80548216831790557f9912a88c19124370fff7f2dad2cb10da6521882ca5737814d4a653e208f9adcd80548216831790557fd482fd1457da2f23cd65d7aafc1acbfc39f320514220679d297c4fb59c519fa680548216831790557f9f9571485703691eb2deaa522d164e746b217e6825c17295848dc93aaa396f7f80548216831790557f375015a6034648b595434d1c4e912171c67c8c2b1b604e4ab4fd782bbec44e1980548216831790557f55f47e989e73a8bdc2fea7324bb2e4f454d5192cbea45653af2c28277878ccbe80548216831790557f1404537361a41d763b83a307967861eb529f800e555ff5d152096a878636eabd80548216831790557f8dd56ba69c54e829d96458b51a2e19a4e127a5d2e21ea15e064776251fbe37c780548216831790557fd2d4871b1517c77561f69f83fc15fb42bf64e1a72139828e7a8e7834803b8bfb80548216831790557f25f426aee6e72a466ee6099c1d98d634d7b83c2bef98a5bfd9a94989714559a680548216831790557fef52108e57f55580288bc6f69b948f57ec3227c9a583cf9178551a05b777cae780548216831790557f04ddc337a35e78c371964b236a50e7b63a1d52b34ff618827bef5e06d08f831f80548216831790557f8500f5a1f21c72ada886063a89479cf1178fe7d05f1281907ef8aaab11b0d85080548216831790557fe3cfa30ad2a68370ce46a092144f2bad33bb0ba7c3e1bc34943672e624720f5e80548216831790557f1dd2c8db61e6c7d4a46621f29041acfb9c67170d56853c5b3eab60076c65e6bc80548216831790557f30b847a8500e300695791ae77e5f262e97ff05c8794919770542d51115d04bcd80548216831790557fc97e43568bd99b79197be0b90f236fb6fa2fb75efa1d9ce99e6e67352a590c7680548216831790557ff2d16d45ea2dc9157c60503cdbe6a26123912e1a52139ab4faf3d91bf39aebce80548216831790557f12d8608112bb818ff1ed30b92bb56960590fe20bca7be7305c97df444ebd136380548216831790557f4cc7186aa80e93208dcf4fc6f4c551ab950f0efcb1ff176b599eb799015901f180548216831790557fdde3677c91f0b25e4400fbd1cc0edb46285f0369ce9451d82d6f43064b56971c80548216831790557f3b6af5fc420f776b778596a0bcc73d6adc4fff7c7163619756f13e590ac978dc80548216831790557f480c851f0e84e7f7c9baff396b078162aa38ff0ba7d4ce8363b4a945410a137880548216831790557fa8c7228726786b9f078ecea7941df4545a4add61b380f39fd9c17e27e190144080548216831790557fce3babc048507e519795f49418b8c65c437b34c78ddabae209e2d66c5780690d80548216831790557f436ffe8bdea4657fa68c03200cb0daaaeb5425b8ea7f5e85d0dbcfa9cf2a839880548216831790557fc176b6f3361986bd01de80c291c2f2a860bdb256ba7a87125d9d122bafaf039a80548216831790557f066a718b6735d6a1ba6aa5507a8c8a7af10d75ceabf44195203889824001ff9a80548216831790557ff271c9ee5919962cb4b24503c44cea103b09f853490191ad520c14ee6b998dd580548216831790557f4c40f10c0fbc9d9c18fe12f4f1dd853c4ce5e935d5184ccd1379f7bc986a7e3b805482168317905573725ad056625326b490b128e02759007ba5e4ebf16000527f41057a762b86dca4c8762d416bcef8785bb9df9d3281db22a22d067309861b508054909116909117905562000e593390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000ea191815260200190565b60405180910390a3505050620012b5565b6001600160a01b03831662000f1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b03821662000f7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000f11565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b82805462000fec9062001235565b90600052602060002090601f0160209004810192826200101057600085556200105b565b82601f106200102b57805160ff19168380011785556200105b565b828001600101855582156200105b579182015b828111156200105b5782518255916020019190600101906200103e565b50620010699291506200106d565b5090565b5b808211156200106957600081556001016200106e565b6000602082840312156200109757600080fd5b81516001600160a01b0381168114620010af57600080fd5b9392505050565b60008060408385031215620010ca57600080fd5b505080516020909101519092909150565b600082620010ed57620010ed6200129f565b500490565b600181815b808511156200113357816000190482111562001117576200111762001289565b808516156200112557918102915b93841c9390800290620010f7565b509250929050565b6000620010af83836000826200115457506001620011f3565b816200116357506000620011f3565b81600181146200117c57600281146200118757620011a7565b6001915050620011f3565b60ff8411156200119b576200119b62001289565b50506001821b620011f3565b5060208310610133831016604e8410600b8410161715620011cc575081810a620011f3565b620011d88383620010f2565b8060001904821115620011ef57620011ef62001289565b0290505b92915050565b600081600019048311821515161562001216576200121662001289565b500290565b60008282101562001230576200123062001289565b500390565b600181811c908216806200124a57607f821691505b602082108114156200126c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200128457620012846200129f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b608051612eda620012d16000396000611f970152612eda6000f3fe60806040526004361061028c5760003560e01c806352390c021161015a57806395d89b41116100c1578063e79d41601161007a578063e79d4160146107db578063ea2f0b37146107f1578063eec2744e14610811578063f2fde38b14610831578063f6540ec714610851578063fe575a871461086757600080fd5b806395d89b4114610700578063a457c2d714610715578063a9059cbb14610735578063b6f8f8dc14610755578063c49b9a8014610775578063dd62ed3e1461079557600080fd5b806370d5ae051161011357806370d5ae0514610654578063715018a61461067457806388f8202014610689578063893d20e8146106c25780638da5cb5b146106c25780638ee88c53146106e057600080fd5b806352390c021461058f5780635342acb4146105af5780635d098b38146105e857806364038409146106085780636bc87c3a1461061e57806370a082311461063457600080fd5b80632d838119116101fe578063437823ec116101b7578063437823ec146104cf578063452ed4f1146104ef5780634549b0391461050f578063457c194c1461052f5780634a74bb021461054f57806350a8e0161461057057600080fd5b80632d8381191461040d578063313ce5671461042d5780633685d4191461044f578063395093511461046f5780633bd5d1731461048f5780633f3cf56c146104af57600080fd5b806313114a9d1161025057806313114a9d1461036d57806315639c1b1461038c57806318160ddd146103a257806322976e0d146103b757806323b872dd146103cd57806326003957146103ed57600080fd5b8063061c82d01461029857806306fdde03146102ba5780630758d924146102e5578063092316021461031d578063095ea7b31461033d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612bb0565b6108a0565b005b3480156102c657600080fd5b506102cf6108d8565b6040516102dc9190612c3c565b60405180910390f35b3480156102f157600080fd5b50601c54610305906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561032957600080fd5b506102b8610338366004612bb0565b61096a565b34801561034957600080fd5b5061035d610358366004612b26565b6109b6565b60405190151581526020016102dc565b34801561037957600080fd5b50600f545b6040519081526020016102dc565b34801561039857600080fd5b5061037e60125481565b3480156103ae57600080fd5b50600d5461037e565b3480156103c357600080fd5b5061037e60185481565b3480156103d957600080fd5b5061035d6103e8366004612ab0565b6109cd565b3480156103f957600080fd5b506102b8610408366004612bec565b610a36565b34801561041957600080fd5b5061037e610428366004612bb0565b610a9c565b34801561043957600080fd5b50600b5460405160ff90911681526020016102dc565b34801561045b57600080fd5b506102b861046a366004612a3d565b610b20565b34801561047b57600080fd5b5061035d61048a366004612b26565b610cd7565b34801561049b57600080fd5b506102b86104aa366004612bb0565b610d0d565b3480156104bb57600080fd5b506102b86104ca366004612bec565b610df7565b3480156104db57600080fd5b506102b86104ea366004612a3d565b610e57565b3480156104fb57600080fd5b50601d54610305906001600160a01b031681565b34801561051b57600080fd5b5061037e61052a366004612bc9565b610ea5565b34801561053b57600080fd5b506102b861054a366004612bb0565b610f32565b34801561055b57600080fd5b5060205461035d90600160a81b900460ff1681565b34801561057c57600080fd5b50602c5461035d90610100900460ff1681565b34801561059b57600080fd5b506102b86105aa366004612a3d565b610f61565b3480156105bb57600080fd5b5061035d6105ca366004612a3d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f457600080fd5b506102b8610603366004612a3d565b6110b4565b34801561061457600080fd5b5061037e60255481565b34801561062a57600080fd5b5061037e60155481565b34801561064057600080fd5b5061037e61064f366004612a3d565b611100565b34801561066057600080fd5b50601f54610305906001600160a01b031681565b34801561068057600080fd5b506102b861115f565b34801561069557600080fd5b5061035d6106a4366004612a3d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106ce57600080fd5b506000546001600160a01b0316610305565b3480156106ec57600080fd5b506102b86106fb366004612bb0565b6111d3565b34801561070c57600080fd5b506102cf611202565b34801561072157600080fd5b5061035d610730366004612b26565b611211565b34801561074157600080fd5b5061035d610750366004612b26565b611260565b34801561076157600080fd5b506102b8610770366004612b6d565b61126d565b34801561078157600080fd5b506102b8610790366004612b52565b6112c8565b3480156107a157600080fd5b5061037e6107b0366004612a77565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e757600080fd5b5061037e602f5481565b3480156107fd57600080fd5b506102b861080c366004612a3d565b611342565b34801561081d57600080fd5b506102b861082c366004612af1565b61138d565b34801561083d57600080fd5b506102b861084c366004612a3d565b6113e2565b34801561085d57600080fd5b5061037e602a5481565b34801561087357600080fd5b5061035d610882366004612a3d565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146108d35760405162461bcd60e51b81526004016108ca90612c91565b60405180910390fd5b601255565b6060601080546108e790612da7565b80601f016020809104026020016040519081016040528092919081815260200182805461091390612da7565b80156109605780601f1061093557610100808354040283529160200191610960565b820191906000526020600020905b81548152906001019060200180831161094357829003601f168201915b5050505050905090565b6000546001600160a01b031633146109945760405162461bcd60e51b81526004016108ca90612c91565b60968110156109a257600080fd5b6109b081633b9aca00612d71565b60315550565b60006109c33384846114cc565b5060015b92915050565b60006109da8484846115f0565b610a2c8433610a2785604051806060016040528060288152602001612e58602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a14565b6114cc565b5060019392505050565b6000546001600160a01b03163314610a605760405162461bcd60e51b81526004016108ca90612c91565b610a7f81610a7984600d54611a4e90919063ffffffff16565b90611acd565b602855600a54610a95908290610a799085611a4e565b602a555050565b6000600e54821115610b035760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108ca565b6000610b0d611b0f565b9050610b198382611acd565b9392505050565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff16610bb25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b60005b600754811015610cd357816001600160a01b031660078281548110610bdc57610bdc612e29565b6000918252602090912001546001600160a01b03161415610cc15760078054610c0790600190612d90565b81548110610c1757610c17612e29565b600091825260209091200154600780546001600160a01b039092169183908110610c4357610c43612e29565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480610c9b57610c9b612e13565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ccb81612de2565b915050610bb5565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109c3918590610a279086611b32565b3360008181526006602052604090205460ff1615610d825760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108ca565b6000610d8d83611b91565b505050506001600160a01b038416600090815260016020526040902054919250610db991905082611be0565b6001600160a01b038316600090815260016020526040902055600e54610ddf9082611be0565b600e55600f54610def9084611b32565b600f55505050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016108ca90612c91565b610e3a81610a7984600d54611a4e90919063ffffffff16565b602355600a54610e50908290610a799085611a4e565b6025555050565b6000546001600160a01b03163314610e815760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600d54831115610ef95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108ca565b81610f18576000610f0984611b91565b509395506109c7945050505050565b6000610f2384611b91565b509295506109c7945050505050565b6000546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016108ca90612c91565b601855565b6000546001600160a01b03163314610f8b5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff1615610ff45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b6001600160a01b0381166000908152600160205260409020541561104e576001600160a01b03811660009081526001602052604090205461103490610a9c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146110de5760405162461bcd60e51b81526004016108ca90612c91565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561113d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109c790610a9c565b6000546001600160a01b031633146111895760405162461bcd60e51b81526004016108ca90612c91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111fd5760405162461bcd60e51b81526004016108ca90612c91565b601555565b6060601180546108e790612da7565b60006109c33384610a2785604051806060016040528060258152602001612e80602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611a14565b60006109c33384846115f0565b6000546001600160a01b031633146112975760405162461bcd60e51b81526004016108ca90612c91565b602c805493151560ff1994851617905560308054921515928416929092179091556032805491151591909216179055565b6000546001600160a01b031633146112f25760405162461bcd60e51b81526004016108ca90612c91565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b0316331461136c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146113b75760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461140c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b0381166114715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661152e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ca565b6001600160a01b03821661158f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ca565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116545760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ca565b6001600160a01b0382166116b65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ca565b600081116117185760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108ca565b60305460ff1615611775576031543a11156117755760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e000000000000000060448201526064016108ca565b61177f8383611c22565b1561193d5760325460ff161561182b57601d546001600160a01b03848116911614156117ea576001600160a01b0382166000908152600460205260409020544314156117ca57600080fd5b6001600160a01b038216600090815260046020526040902043905561182b565b6001600160a01b03831660009081526004602052604090205443141561180f57600080fd5b6001600160a01b03831660009081526004602052604090204390555b60235481111561188e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108ca565b601e546001600160a01b038381169116148015906118ba5750601d546001600160a01b03838116911614155b1561193d5760006118ca83611100565b6028549091506118da8383612d37565b111561193b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016108ca565b505b600061194830611100565b9050602354811061195857506023545b602b546020549082101590600160a01b900460ff161580156119875750601d546001600160a01b038581169116145b801561199c5750602054600160a81b900460ff165b156119b55780156119b557602b5491506119b582611cdf565b6001600160a01b03851660009081526005602052604090205460019060ff16806119f757506001600160a01b03851660009081526005602052604090205460ff165b15611a00575060005b611a0c86868684611e40565b505050505050565b60008184841115611a385760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d90565b95945050505050565b600082611a5d575060006109c7565b6000611a698385612d71565b905082611a768583612d4f565b14610b195760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108ca565b6000610b1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612077565b6000806000611b1c6120a5565b9092509050611b2b8282611acd565b9250505090565b600080611b3f8385612d37565b905083811015610b195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108ca565b6000806000806000806000806000611ba88a612227565b9250925092506000806000611bc68d8686611bc1611b0f565b612269565b919f909e50909c50959a5093985091965092945050505050565b6000610b1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a14565b600080546001600160a01b03848116911614801590611c4f57506000546001600160a01b03838116911614155b8015611c7457506001600160a01b03821660009081526009602052604090205460ff16155b8015611c9957506001600160a01b03831660009081526009602052604090205460ff16155b8015611cb35750601f546001600160a01b03838116911614155b8015611cc757506001600160a01b03821615155b8015610b19575050506001600160a01b031630141590565b6020805460ff60a01b1916600160a01b179055601554601854611d029190612d37565b611d0b57611e30565b6000611d35611d27601554601854611b3290919063ffffffff16565b601854610a79908590611a4e565b90506000611d438383611be0565b90506000611d52826002611acd565b90506000611d608383611be0565b9050476000611d6f8487611b32565b9050611d7a816122b9565b6000611d864784611be0565b90506000611d9883610a798489611a4e565b9050611da4858261241a565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a16020546001600160a01b03166108fc611dfe8484611be0565b6040518115909202916000818181858888f19350505050158015611e26573d6000803e3d6000fd5b5050505050505050505b506020805460ff60a01b19169055565b602c5460ff161561203d576001600160a01b03841660009081526008602052604090205460ff1680611e8a57506001600160a01b03831660009081526008602052604090205460ff165b15611eca5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108ca565b602c54610100900460ff16611f6057611ee384846124dd565b602c54610100900460ff16158015611f005750611f008484611c22565b15611f5b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108ca565b61203d565b6000602d54118015611f7f5750601d546001600160a01b038581169116145b8015611f905750611f908484611c22565b1561203d577f0000000000000000000000000000000000000000000000000000000000000000602d5443611fc49190612d90565b101561203d576001600160a01b0383166000908152600860205260408120805460ff19166001179055602f805491611ffb83612de2565b90915550506040516001600160a01b03841681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b8061204a5761204a6125f0565b612055848484612629565b8061207157612071601354601255601654601555601954601855565b50505050565b600081836120985760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d4f565b600e54600d546000918291825b6007548110156121f7578260016000600784815481106120d4576120d4612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061213f575081600260006007848154811061211857612118612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561215557600e54600d54945094505050509091565b61219b600160006007848154811061216f5761216f612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611be0565b92506121e360026000600784815481106121b7576121b7612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611be0565b9150806121ef81612de2565b9150506120b2565b50600d54600e5461220791611acd565b82101561221e57600e54600d549350935050509091565b90939092509050565b600080600080612236856128f4565b9050600061224386612911565b9050600061225b826122558986611be0565b90611be0565b979296509094509092505050565b60008080806122788886611a4e565b905060006122868887611a4e565b905060006122948888611a4e565b905060006122a6826122558686611be0565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122ee576122ee612e29565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561234257600080fd5b505afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a9190612a5a565b8160018151811061238d5761238d612e29565b6001600160a01b039283166020918202929092010152601c546123b391309116846114cc565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123ec908590600090869030904290600401612cc6565b600060405180830381600087803b15801561240657600080fd5b505af1158015611a0c573d6000803e3d6000fd5b601c546124329030906001600160a01b0316846114cc565b601c54601f5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561249d57600080fd5b505af11580156124b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124d69190612c0e565b5050505050565b602c54610100900460ff16156125415760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108ca565b61254b8282611c22565b1580156125655750601d546001600160a01b038281169116145b15610cd3576001600160a01b038216600090815260096020908152604091829020805460ff19166001908117909155602c805461ff00191661010017905543602d5542602e55815460ff60a81b1916600160a81b17825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6012541580156126005750601554155b1561260757565b6012805460135560158054601655601880546019556000928390559082905555565b60008060008060008061263b87611b91565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061266d9087611be0565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461269c9086611b32565b6001600160a01b03808a16600090815260016020908152604080832094909455918c1681526006909152205460ff1680156126f057506001600160a01b03881660009081526006602052604090205460ff16155b15612736576001600160a01b0389166000908152600260205260409020546127189088611be0565b6001600160a01b038a1660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1615801561277757506001600160a01b03881660009081526006602052604090205460ff165b156127bd576001600160a01b03881660009081526002602052604090205461279f9084611b32565b6001600160a01b03891660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1680156127fd57506001600160a01b03881660009081526006602052604090205460ff165b1561286e576001600160a01b0389166000908152600260205260409020546128259088611be0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546128549084611b32565b6001600160a01b0389166000908152600260205260409020555b801561287e5761287e898261293a565b600084118061288d5750600082115b1561289c5761289c8483612a04565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128e191815260200190565b60405180910390a3505050505050505050565b60006109c7601b54610a7960125485611a4e90919063ffffffff16565b60006109c7601b54610a79612933601854601554611b3290919063ffffffff16565b8590611a4e565b6000612944611b0f565b905060006129528383611a4e565b3060009081526001602052604090205490915061296f9082611b32565b3060009081526001602090815260408083209390935560069052205460ff16156129be57306000908152600260205260409020546129ad9084611b32565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600e54612a119083611be0565b600e55600f54612a219082611b32565b600f555050565b80358015158114612a3857600080fd5b919050565b600060208284031215612a4f57600080fd5b8135610b1981612e3f565b600060208284031215612a6c57600080fd5b8151610b1981612e3f565b60008060408385031215612a8a57600080fd5b8235612a9581612e3f565b91506020830135612aa581612e3f565b809150509250929050565b600080600060608486031215612ac557600080fd5b8335612ad081612e3f565b92506020840135612ae081612e3f565b929592945050506040919091013590565b60008060408385031215612b0457600080fd5b8235612b0f81612e3f565b9150612b1d60208401612a28565b90509250929050565b60008060408385031215612b3957600080fd5b8235612b4481612e3f565b946020939093013593505050565b600060208284031215612b6457600080fd5b610b1982612a28565b600080600060608486031215612b8257600080fd5b612b8b84612a28565b9250612b9960208501612a28565b9150612ba760408501612a28565b90509250925092565b600060208284031215612bc257600080fd5b5035919050565b60008060408385031215612bdc57600080fd5b82359150612b1d60208401612a28565b60008060408385031215612bff57600080fd5b50508035926020909101359150565b600080600060608486031215612c2357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612c6957858101830151858201604001528201612c4d565b81811115612c7b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d165784516001600160a01b031683529383019391830191600101612cf1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d4a57612d4a612dfd565b500190565b600082612d6c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d8b57612d8b612dfd565b500290565b600082821015612da257612da2612dfd565b500390565b600181811c90821680612dbb57607f821691505b60208210811415612ddc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612df657612df6612dfd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e5457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122061446012b346ff4bdb4a3de7c88283990974d2a6db772194519a9707b94c632564736f6c63430008070033a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000012c

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806352390c021161015a57806395d89b41116100c1578063e79d41601161007a578063e79d4160146107db578063ea2f0b37146107f1578063eec2744e14610811578063f2fde38b14610831578063f6540ec714610851578063fe575a871461086757600080fd5b806395d89b4114610700578063a457c2d714610715578063a9059cbb14610735578063b6f8f8dc14610755578063c49b9a8014610775578063dd62ed3e1461079557600080fd5b806370d5ae051161011357806370d5ae0514610654578063715018a61461067457806388f8202014610689578063893d20e8146106c25780638da5cb5b146106c25780638ee88c53146106e057600080fd5b806352390c021461058f5780635342acb4146105af5780635d098b38146105e857806364038409146106085780636bc87c3a1461061e57806370a082311461063457600080fd5b80632d838119116101fe578063437823ec116101b7578063437823ec146104cf578063452ed4f1146104ef5780634549b0391461050f578063457c194c1461052f5780634a74bb021461054f57806350a8e0161461057057600080fd5b80632d8381191461040d578063313ce5671461042d5780633685d4191461044f578063395093511461046f5780633bd5d1731461048f5780633f3cf56c146104af57600080fd5b806313114a9d1161025057806313114a9d1461036d57806315639c1b1461038c57806318160ddd146103a257806322976e0d146103b757806323b872dd146103cd57806326003957146103ed57600080fd5b8063061c82d01461029857806306fdde03146102ba5780630758d924146102e5578063092316021461031d578063095ea7b31461033d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612bb0565b6108a0565b005b3480156102c657600080fd5b506102cf6108d8565b6040516102dc9190612c3c565b60405180910390f35b3480156102f157600080fd5b50601c54610305906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561032957600080fd5b506102b8610338366004612bb0565b61096a565b34801561034957600080fd5b5061035d610358366004612b26565b6109b6565b60405190151581526020016102dc565b34801561037957600080fd5b50600f545b6040519081526020016102dc565b34801561039857600080fd5b5061037e60125481565b3480156103ae57600080fd5b50600d5461037e565b3480156103c357600080fd5b5061037e60185481565b3480156103d957600080fd5b5061035d6103e8366004612ab0565b6109cd565b3480156103f957600080fd5b506102b8610408366004612bec565b610a36565b34801561041957600080fd5b5061037e610428366004612bb0565b610a9c565b34801561043957600080fd5b50600b5460405160ff90911681526020016102dc565b34801561045b57600080fd5b506102b861046a366004612a3d565b610b20565b34801561047b57600080fd5b5061035d61048a366004612b26565b610cd7565b34801561049b57600080fd5b506102b86104aa366004612bb0565b610d0d565b3480156104bb57600080fd5b506102b86104ca366004612bec565b610df7565b3480156104db57600080fd5b506102b86104ea366004612a3d565b610e57565b3480156104fb57600080fd5b50601d54610305906001600160a01b031681565b34801561051b57600080fd5b5061037e61052a366004612bc9565b610ea5565b34801561053b57600080fd5b506102b861054a366004612bb0565b610f32565b34801561055b57600080fd5b5060205461035d90600160a81b900460ff1681565b34801561057c57600080fd5b50602c5461035d90610100900460ff1681565b34801561059b57600080fd5b506102b86105aa366004612a3d565b610f61565b3480156105bb57600080fd5b5061035d6105ca366004612a3d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105f457600080fd5b506102b8610603366004612a3d565b6110b4565b34801561061457600080fd5b5061037e60255481565b34801561062a57600080fd5b5061037e60155481565b34801561064057600080fd5b5061037e61064f366004612a3d565b611100565b34801561066057600080fd5b50601f54610305906001600160a01b031681565b34801561068057600080fd5b506102b861115f565b34801561069557600080fd5b5061035d6106a4366004612a3d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106ce57600080fd5b506000546001600160a01b0316610305565b3480156106ec57600080fd5b506102b86106fb366004612bb0565b6111d3565b34801561070c57600080fd5b506102cf611202565b34801561072157600080fd5b5061035d610730366004612b26565b611211565b34801561074157600080fd5b5061035d610750366004612b26565b611260565b34801561076157600080fd5b506102b8610770366004612b6d565b61126d565b34801561078157600080fd5b506102b8610790366004612b52565b6112c8565b3480156107a157600080fd5b5061037e6107b0366004612a77565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e757600080fd5b5061037e602f5481565b3480156107fd57600080fd5b506102b861080c366004612a3d565b611342565b34801561081d57600080fd5b506102b861082c366004612af1565b61138d565b34801561083d57600080fd5b506102b861084c366004612a3d565b6113e2565b34801561085d57600080fd5b5061037e602a5481565b34801561087357600080fd5b5061035d610882366004612a3d565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146108d35760405162461bcd60e51b81526004016108ca90612c91565b60405180910390fd5b601255565b6060601080546108e790612da7565b80601f016020809104026020016040519081016040528092919081815260200182805461091390612da7565b80156109605780601f1061093557610100808354040283529160200191610960565b820191906000526020600020905b81548152906001019060200180831161094357829003601f168201915b5050505050905090565b6000546001600160a01b031633146109945760405162461bcd60e51b81526004016108ca90612c91565b60968110156109a257600080fd5b6109b081633b9aca00612d71565b60315550565b60006109c33384846114cc565b5060015b92915050565b60006109da8484846115f0565b610a2c8433610a2785604051806060016040528060288152602001612e58602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a14565b6114cc565b5060019392505050565b6000546001600160a01b03163314610a605760405162461bcd60e51b81526004016108ca90612c91565b610a7f81610a7984600d54611a4e90919063ffffffff16565b90611acd565b602855600a54610a95908290610a799085611a4e565b602a555050565b6000600e54821115610b035760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108ca565b6000610b0d611b0f565b9050610b198382611acd565b9392505050565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff16610bb25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b60005b600754811015610cd357816001600160a01b031660078281548110610bdc57610bdc612e29565b6000918252602090912001546001600160a01b03161415610cc15760078054610c0790600190612d90565b81548110610c1757610c17612e29565b600091825260209091200154600780546001600160a01b039092169183908110610c4357610c43612e29565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff191690556007805480610c9b57610c9b612e13565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ccb81612de2565b915050610bb5565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109c3918590610a279086611b32565b3360008181526006602052604090205460ff1615610d825760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108ca565b6000610d8d83611b91565b505050506001600160a01b038416600090815260016020526040902054919250610db991905082611be0565b6001600160a01b038316600090815260016020526040902055600e54610ddf9082611be0565b600e55600f54610def9084611b32565b600f55505050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016108ca90612c91565b610e3a81610a7984600d54611a4e90919063ffffffff16565b602355600a54610e50908290610a799085611a4e565b6025555050565b6000546001600160a01b03163314610e815760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600d54831115610ef95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108ca565b81610f18576000610f0984611b91565b509395506109c7945050505050565b6000610f2384611b91565b509295506109c7945050505050565b6000546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016108ca90612c91565b601855565b6000546001600160a01b03163314610f8b5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03811660009081526006602052604090205460ff1615610ff45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108ca565b6001600160a01b0381166000908152600160205260409020541561104e576001600160a01b03811660009081526001602052604090205461103490610a9c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146110de5760405162461bcd60e51b81526004016108ca90612c91565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561113d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109c790610a9c565b6000546001600160a01b031633146111895760405162461bcd60e51b81526004016108ca90612c91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111fd5760405162461bcd60e51b81526004016108ca90612c91565b601555565b6060601180546108e790612da7565b60006109c33384610a2785604051806060016040528060258152602001612e80602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611a14565b60006109c33384846115f0565b6000546001600160a01b031633146112975760405162461bcd60e51b81526004016108ca90612c91565b602c805493151560ff1994851617905560308054921515928416929092179091556032805491151591909216179055565b6000546001600160a01b031633146112f25760405162461bcd60e51b81526004016108ca90612c91565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b0316331461136c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146113b75760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461140c5760405162461bcd60e51b81526004016108ca90612c91565b6001600160a01b0381166114715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661152e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ca565b6001600160a01b03821661158f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ca565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116545760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ca565b6001600160a01b0382166116b65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ca565b600081116117185760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108ca565b60305460ff1615611775576031543a11156117755760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e000000000000000060448201526064016108ca565b61177f8383611c22565b1561193d5760325460ff161561182b57601d546001600160a01b03848116911614156117ea576001600160a01b0382166000908152600460205260409020544314156117ca57600080fd5b6001600160a01b038216600090815260046020526040902043905561182b565b6001600160a01b03831660009081526004602052604090205443141561180f57600080fd5b6001600160a01b03831660009081526004602052604090204390555b60235481111561188e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108ca565b601e546001600160a01b038381169116148015906118ba5750601d546001600160a01b03838116911614155b1561193d5760006118ca83611100565b6028549091506118da8383612d37565b111561193b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016108ca565b505b600061194830611100565b9050602354811061195857506023545b602b546020549082101590600160a01b900460ff161580156119875750601d546001600160a01b038581169116145b801561199c5750602054600160a81b900460ff165b156119b55780156119b557602b5491506119b582611cdf565b6001600160a01b03851660009081526005602052604090205460019060ff16806119f757506001600160a01b03851660009081526005602052604090205460ff165b15611a00575060005b611a0c86868684611e40565b505050505050565b60008184841115611a385760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d90565b95945050505050565b600082611a5d575060006109c7565b6000611a698385612d71565b905082611a768583612d4f565b14610b195760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108ca565b6000610b1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612077565b6000806000611b1c6120a5565b9092509050611b2b8282611acd565b9250505090565b600080611b3f8385612d37565b905083811015610b195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108ca565b6000806000806000806000806000611ba88a612227565b9250925092506000806000611bc68d8686611bc1611b0f565b612269565b919f909e50909c50959a5093985091965092945050505050565b6000610b1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a14565b600080546001600160a01b03848116911614801590611c4f57506000546001600160a01b03838116911614155b8015611c7457506001600160a01b03821660009081526009602052604090205460ff16155b8015611c9957506001600160a01b03831660009081526009602052604090205460ff16155b8015611cb35750601f546001600160a01b03838116911614155b8015611cc757506001600160a01b03821615155b8015610b19575050506001600160a01b031630141590565b6020805460ff60a01b1916600160a01b179055601554601854611d029190612d37565b611d0b57611e30565b6000611d35611d27601554601854611b3290919063ffffffff16565b601854610a79908590611a4e565b90506000611d438383611be0565b90506000611d52826002611acd565b90506000611d608383611be0565b9050476000611d6f8487611b32565b9050611d7a816122b9565b6000611d864784611be0565b90506000611d9883610a798489611a4e565b9050611da4858261241a565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a16020546001600160a01b03166108fc611dfe8484611be0565b6040518115909202916000818181858888f19350505050158015611e26573d6000803e3d6000fd5b5050505050505050505b506020805460ff60a01b19169055565b602c5460ff161561203d576001600160a01b03841660009081526008602052604090205460ff1680611e8a57506001600160a01b03831660009081526008602052604090205460ff165b15611eca5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016108ca565b602c54610100900460ff16611f6057611ee384846124dd565b602c54610100900460ff16158015611f005750611f008484611c22565b15611f5b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016108ca565b61203d565b6000602d54118015611f7f5750601d546001600160a01b038581169116145b8015611f905750611f908484611c22565b1561203d577f0000000000000000000000000000000000000000000000000000000000000005602d5443611fc49190612d90565b101561203d576001600160a01b0383166000908152600860205260408120805460ff19166001179055602f805491611ffb83612de2565b90915550506040516001600160a01b03841681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b8061204a5761204a6125f0565b612055848484612629565b8061207157612071601354601255601654601555601954601855565b50505050565b600081836120985760405162461bcd60e51b81526004016108ca9190612c3c565b506000611a458486612d4f565b600e54600d546000918291825b6007548110156121f7578260016000600784815481106120d4576120d4612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061213f575081600260006007848154811061211857612118612e29565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561215557600e54600d54945094505050509091565b61219b600160006007848154811061216f5761216f612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611be0565b92506121e360026000600784815481106121b7576121b7612e29565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611be0565b9150806121ef81612de2565b9150506120b2565b50600d54600e5461220791611acd565b82101561221e57600e54600d549350935050509091565b90939092509050565b600080600080612236856128f4565b9050600061224386612911565b9050600061225b826122558986611be0565b90611be0565b979296509094509092505050565b60008080806122788886611a4e565b905060006122868887611a4e565b905060006122948888611a4e565b905060006122a6826122558686611be0565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122ee576122ee612e29565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561234257600080fd5b505afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a9190612a5a565b8160018151811061238d5761238d612e29565b6001600160a01b039283166020918202929092010152601c546123b391309116846114cc565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906123ec908590600090869030904290600401612cc6565b600060405180830381600087803b15801561240657600080fd5b505af1158015611a0c573d6000803e3d6000fd5b601c546124329030906001600160a01b0316846114cc565b601c54601f5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561249d57600080fd5b505af11580156124b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124d69190612c0e565b5050505050565b602c54610100900460ff16156125415760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108ca565b61254b8282611c22565b1580156125655750601d546001600160a01b038281169116145b15610cd3576001600160a01b038216600090815260096020908152604091829020805460ff19166001908117909155602c805461ff00191661010017905543602d5542602e55815460ff60a81b1916600160a81b17825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6012541580156126005750601554155b1561260757565b6012805460135560158054601655601880546019556000928390559082905555565b60008060008060008061263b87611b91565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061266d9087611be0565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461269c9086611b32565b6001600160a01b03808a16600090815260016020908152604080832094909455918c1681526006909152205460ff1680156126f057506001600160a01b03881660009081526006602052604090205460ff16155b15612736576001600160a01b0389166000908152600260205260409020546127189088611be0565b6001600160a01b038a1660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1615801561277757506001600160a01b03881660009081526006602052604090205460ff165b156127bd576001600160a01b03881660009081526002602052604090205461279f9084611b32565b6001600160a01b03891660009081526002602052604090205561286e565b6001600160a01b03891660009081526006602052604090205460ff1680156127fd57506001600160a01b03881660009081526006602052604090205460ff165b1561286e576001600160a01b0389166000908152600260205260409020546128259088611be0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546128549084611b32565b6001600160a01b0389166000908152600260205260409020555b801561287e5761287e898261293a565b600084118061288d5750600082115b1561289c5761289c8483612a04565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128e191815260200190565b60405180910390a3505050505050505050565b60006109c7601b54610a7960125485611a4e90919063ffffffff16565b60006109c7601b54610a79612933601854601554611b3290919063ffffffff16565b8590611a4e565b6000612944611b0f565b905060006129528383611a4e565b3060009081526001602052604090205490915061296f9082611b32565b3060009081526001602090815260408083209390935560069052205460ff16156129be57306000908152600260205260409020546129ad9084611b32565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600e54612a119083611be0565b600e55600f54612a219082611b32565b600f555050565b80358015158114612a3857600080fd5b919050565b600060208284031215612a4f57600080fd5b8135610b1981612e3f565b600060208284031215612a6c57600080fd5b8151610b1981612e3f565b60008060408385031215612a8a57600080fd5b8235612a9581612e3f565b91506020830135612aa581612e3f565b809150509250929050565b600080600060608486031215612ac557600080fd5b8335612ad081612e3f565b92506020840135612ae081612e3f565b929592945050506040919091013590565b60008060408385031215612b0457600080fd5b8235612b0f81612e3f565b9150612b1d60208401612a28565b90509250929050565b60008060408385031215612b3957600080fd5b8235612b4481612e3f565b946020939093013593505050565b600060208284031215612b6457600080fd5b610b1982612a28565b600080600060608486031215612b8257600080fd5b612b8b84612a28565b9250612b9960208501612a28565b9150612ba760408501612a28565b90509250925092565b600060208284031215612bc257600080fd5b5035919050565b60008060408385031215612bdc57600080fd5b82359150612b1d60208401612a28565b60008060408385031215612bff57600080fd5b50508035926020909101359150565b600080600060608486031215612c2357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612c6957858101830151858201604001528201612c4d565b81811115612c7b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d165784516001600160a01b031683529383019391830191600101612cf1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d4a57612d4a612dfd565b500190565b600082612d6c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d8b57612d8b612dfd565b500290565b600082821015612da257612da2612dfd565b500390565b600181811c90821680612dbb57607f821691505b60208210811415612ddc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612df657612df6612dfd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e5457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122061446012b346ff4bdb4a3de7c88283990974d2a6db772194519a9707b94c632564736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000012c

-----Decoded View---------------
Arg [0] : _snipeBlockAmt (uint256): 5
Arg [1] : _gasPriceLimit (uint256): 300

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [1] : 000000000000000000000000000000000000000000000000000000000000012c


Deployed Bytecode Sourcemap

20515:28078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33270:110;;;;;;;;;;-1:-1:-1;33270:110:0;;;;;:::i;:::-;;:::i;:::-;;30829:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22312:35;;;;;;;;;;-1:-1:-1;22312:35:0;;;;-1:-1:-1;;;;;22312:35:0;;;;;;-1:-1:-1;;;;;4113:32:1;;;4095:51;;4083:2;4068:18;22312:35:0;3949:203:1;34756:135:0;;;;;;;;;;-1:-1:-1;34756:135:0;;;;;:::i;:::-;;:::i;31523:161::-;;;;;;;;;;-1:-1:-1;31523:161:0;;;;;:::i;:::-;;:::i;:::-;;;4934:14:1;;4927:22;4909:41;;4897:2;4882:18;31523:161:0;4769:187:1;34661:87:0;;;;;;;;;;-1:-1:-1;34730:10:0;;34661:87;;;13366:25:1;;;13354:2;13339:18;34661:87:0;13220:177:1;21623:30:0;;;;;;;;;;;;;;;;30564:83;;;;;;;;;;-1:-1:-1;30637:7:0;;30564:83;;22013:34;;;;;;;;;;;;;;;;31692:313;;;;;;;;;;-1:-1:-1;31692:313:0;;;;;:::i;:::-;;:::i;33874:219::-;;;;;;;;;;-1:-1:-1;33874:219:0;;;;;:::i;:::-;;:::i;36066:253::-;;;;;;;;;;-1:-1:-1;36066:253:0;;;;;:::i;:::-;;:::i;30653:80::-;;;;;;;;;;-1:-1:-1;30721:9:0;;30653:80;;30721:9;;;;14853:36:1;;14841:2;14826:18;30653:80:0;14711:184:1;36782:479:0;;;;;;;;;;-1:-1:-1;36782:479:0;;;;;:::i;:::-;;:::i;32013:218::-;;;;;;;;;;-1:-1:-1;32013:218:0;;;;;:::i;:::-;;:::i;35237:377::-;;;;;;;;;;-1:-1:-1;35237:377:0;;;;;:::i;:::-;;:::i;33652:214::-;;;;;;;;;;-1:-1:-1;33652:214:0;;;;;:::i;:::-;;:::i;34418:111::-;;;;;;;;;;-1:-1:-1;34418:111:0;;;;;:::i;:::-;;:::i;22354:21::-;;;;;;;;;;-1:-1:-1;22354:21:0;;;;-1:-1:-1;;;;;22354:21:0;;;35622:436;;;;;;;;;;-1:-1:-1;35622:436:0;;;;;:::i;:::-;;:::i;33522:122::-;;;;;;;;;;-1:-1:-1;33522:122:0;;;;;:::i;:::-;;:::i;22704:40::-;;;;;;;;;;-1:-1:-1;22704:40:0;;;;-1:-1:-1;;;22704:40:0;;;;;;23743:36;;;;;;;;;;-1:-1:-1;23743:36:0;;;;;;;;;;;36327:447;;;;;;;;;;-1:-1:-1;36327:447:0;;;;;:::i;:::-;;:::i;32644:123::-;;;;;;;;;;-1:-1:-1;32644:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;32732:27:0;32708:4;32732:27;;;:18;:27;;;;;;;;;32644:123;34101:130;;;;;;;;;;-1:-1:-1;34101:130:0;;;;;:::i;:::-;;:::i;23047:77::-;;;;;;;;;;;;;;;;21815:34;;;;;;;;;;;;;;;;31142:198;;;;;;;;;;-1:-1:-1;31142:198:0;;;;;:::i;:::-;;:::i;22491:71::-;;;;;;;;;;-1:-1:-1;22491:71:0;;;;-1:-1:-1;;;;;22491:71:0;;;20092:148;;;;;;;;;;;;;:::i;32516:120::-;;;;;;;;;;-1:-1:-1;32516:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;32608:20:0;32584:4;32608:20;;;:11;:20;;;;;;;;;32516:120;30915:80;;;;;;;;;;-1:-1:-1;30967:7:0;19943:6;-1:-1:-1;;;;;19943:6:0;30915:80;;33392:122;;;;;;;;;;-1:-1:-1;33392:122:0;;;;;:::i;:::-;;:::i;30739:84::-;;;;;;;;;;;;;:::i;32239:269::-;;;;;;;;;;-1:-1:-1;32239:269:0;;;;;:::i;:::-;;:::i;31348:167::-;;;;;;;;;;-1:-1:-1;31348:167:0;;;;;:::i;:::-;;:::i;33040:218::-;;;;;;;;;;-1:-1:-1;33040:218:0;;;;;:::i;:::-;;:::i;34239:171::-;;;;;;;;;;-1:-1:-1;34239:171:0;;;;;:::i;:::-;;:::i;31001:133::-;;;;;;;;;;-1:-1:-1;31001:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;31103:19:0;;;31085:7;31103:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;31001:133;23910:32;;;;;;;;;;;;;;;;34541:112;;;;;;;;;;-1:-1:-1;34541:112:0;;;;;:::i;:::-;;:::i;32899:133::-;;;;;;;;;;-1:-1:-1;32899:133:0;;;;;:::i;:::-;;:::i;20248:254::-;;;;;;;;;;-1:-1:-1;20248:254:0;;;;;:::i;:::-;;:::i;23472:87::-;;;;;;;;;;;;;;;;32775:116;;;;;;;;;;-1:-1:-1;32775:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;32860:23:0;32836:4;32860:23;;;:14;:23;;;;;;;;;32775:116;33270:110;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;;;;;;;;;33348:11:::1;:24:::0;33270:110::o;30829:80::-;30877:13;30901:5;30894:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30829:80;:::o;34756:135::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;34840:3:::1;34833;:10;;34825:19;;;::::0;::::1;;34871:12;:3:::0;34877:6:::1;34871:12;:::i;:::-;34855:13;:28:::0;-1:-1:-1;34756:135:0:o;31523:161::-;31598:4;31615:39;193:10;31638:7;31647:6;31615:8;:39::i;:::-;-1:-1:-1;31672:4:0;31523:161;;;;;:::o;31692:313::-;31790:4;31807:36;31817:6;31825:9;31836:6;31807:9;:36::i;:::-;31854:121;31863:6;193:10;31885:89;31923:6;31885:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31885:19:0;;;;;;:11;:19;;;;;;;;193:10;31885:33;;;;;;;;;;:37;:89::i;:::-;31854:8;:121::i;:::-;-1:-1:-1;31993:4:0;31692:313;;;;;:::o;33874:219::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;33983:33:::1;34008:7;33983:20;33995:7;33983;;:11;;:20;;;;:::i;:::-;:24:::0;::::1;:33::i;:::-;33966:14;:50:::0;34045:14:::1;::::0;:40:::1;::::0;34077:7;;34045:27:::1;::::0;34064:7;34045:18:::1;:27::i;:40::-;34027:15;:58:::0;-1:-1:-1;;33874:219:0:o;36066:253::-;36132:7;36171;;36160;:18;;36152:73;;;;-1:-1:-1;;;36152:73:0;;6404:2:1;36152: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;;36152:73:0;6202:406:1;36152:73:0;36236:19;36259:10;:8;:10::i;:::-;36236:33;-1:-1:-1;36287:24:0;:7;36236:33;36287:11;:24::i;:::-;36280:31;36066:253;-1:-1:-1;;;36066:253:0:o;36782:479::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36864:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36856:60;;;::::0;-1:-1:-1;;;36856:60:0;;8791:2:1;36856:60:0::1;::::0;::::1;8773:21:1::0;8830:2;8810:18;;;8803:30;8869:29;8849:18;;;8842:57;8916:18;;36856:60:0::1;8589:351:1::0;36856:60:0::1;36932:9;36927:327;36951:9;:16:::0;36947:20;::::1;36927:327;;;37009:7;-1:-1:-1::0;;;;;36993:23:0::1;:9;37003:1;36993:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36993:12:0::1;:23;36989:254;;;37052:9;37062:16:::0;;:20:::1;::::0;37081:1:::1;::::0;37062:20:::1;:::i;:::-;37052:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;37037:9:::1;:12:::0;;-1:-1:-1;;;;;37052:31:0;;::::1;::::0;37047:1;;37037:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;37037:46:0::1;-1:-1:-1::0;;;;;37037:46:0;;::::1;;::::0;;37102:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;37141:11:::1;:20:::0;;;;:28;;-1:-1:-1;;37141:28:0::1;::::0;;37188:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;37188:15:0;;;;;-1:-1:-1;;;;;;37188:15:0::1;::::0;;;;;36927:327:::1;36782:479:::0;:::o;36989:254::-:1;36969:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36927:327;;;;36782:479:::0;:::o;32013:218::-;193:10;32101:4;32150:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32150:34:0;;;;;;;;;;32101:4;;32118:83;;32141:7;;32150:50;;32189:10;32150:38;:50::i;35237:377::-;193:10;35289:14;35338:19;;;:11;:19;;;;;;;;35337:20;35329:77;;;;-1:-1:-1;;;35329:77:0;;13009:2:1;35329: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;;35329:77:0;12807:408:1;35329:77:0;35418:15;35442:19;35453:7;35442:10;:19::i;:::-;-1:-1:-1;;;;;;;;;35490:15:0;;;;;;:7;:15;;;;;;35417:44;;-1:-1:-1;35490:28:0;;:15;-1:-1:-1;35417:44:0;35490:19;:28::i;:::-;-1:-1:-1;;;;;35472:15:0;;;;;;:7;:15;;;;;:46;35539:7;;:20;;35551:7;35539:11;:20::i;:::-;35529:7;:30;35583:10;;:23;;35598:7;35583:14;:23::i;:::-;35570:10;:36;-1:-1:-1;;;35237:377:0:o;33652:214::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;33758:33:::1;33783:7;33758:20;33770:7;33758;;:11;;:20;;;;:::i;:33::-;33743:12;:48:::0;33818:14:::1;::::0;:40:::1;::::0;33850:7;;33818:27:::1;::::0;33837:7;33818:18:::1;:27::i;:40::-;33802:13;:56:::0;-1:-1:-1;;33652:214:0:o;34418:111::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34487:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34487:34:0::1;34517:4;34487:34;::::0;;34418:111::o;35622:436::-;35712:7;35751;;35740;:18;;35732:62;;;;-1:-1:-1;;;35732:62:0;;9500:2:1;35732:62:0;;;9482:21:1;9539:2;9519:18;;;9512:30;9578:33;9558:18;;;9551:61;9629:18;;35732:62:0;9298:355:1;35732:62:0;35810:17;35805:246;;35845:15;35869:19;35880:7;35869:10;:19::i;:::-;-1:-1:-1;35844:44:0;;-1:-1:-1;35903:14:0;;-1:-1:-1;;;;;35903:14:0;35805:246;35952:23;35983:19;35994:7;35983:10;:19::i;:::-;-1:-1:-1;35950:52:0;;-1:-1:-1;36017:22:0;;-1:-1:-1;;;;;36017:22:0;33522:122;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;33608:13:::1;:28:::0;33522:122::o;36327:447::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36524:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36523:21;36515:61;;;::::0;-1:-1:-1;;;36515:61:0;;8791:2:1;36515:61:0::1;::::0;::::1;8773:21:1::0;8830:2;8810:18;;;8803:30;8869:29;8849:18;;;8842:57;8916:18;;36515:61:0::1;8589:351:1::0;36515:61:0::1;-1:-1:-1::0;;;;;36590:16:0;::::1;36609:1;36590:16:::0;;;:7:::1;:16;::::0;;;;;:20;36587:108:::1;;-1:-1:-1::0;;;;;36666:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36646:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36627:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36587:108:::1;-1:-1:-1::0;;;;;36705:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36705:27:0::1;36728:4;36705:27:::0;;::::1;::::0;;;36743:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36743:23:0::1;::::0;;::::1;::::0;;36327:447::o;34101:130::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;34186:16:::1;:37:::0;;-1:-1:-1;;;;;;34186:37:0::1;-1:-1:-1::0;;;;;34186:37:0;;;::::1;::::0;;;::::1;::::0;;34101:130::o;31142:198::-;-1:-1:-1;;;;;31232:20:0;;31208:7;31232:20;;;:11;:20;;;;;;;;31228:49;;;-1:-1:-1;;;;;;31261:16:0;;;;;:7;:16;;;;;;;31142:198::o;31228:49::-;-1:-1:-1;;;;;31315:16:0;;;;;;:7;:16;;;;;;31295:37;;:19;:37::i;20092:148::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;20199:1:::1;20183:6:::0;;20162:40:::1;::::0;-1:-1:-1;;;;;20183:6:0;;::::1;::::0;20162:40:::1;::::0;20199:1;;20162:40:::1;20230:1;20213:19:::0;;-1:-1:-1;;;;;;20213:19:0::1;::::0;;20092:148::o;33392:122::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;33478:13:::1;:28:::0;33392:122::o;30739:84::-;30789:13;30813:7;30806:14;;;;;:::i;32239:269::-;32332:4;32349:129;193:10;32372:7;32381:96;32420:15;32381:96;;;;;;;;;;;;;;;;;193:10;32381:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32381:34:0;;;;;;;;;;;;:38;:96::i;31348:167::-;31426:4;31443:42;193:10;31467:9;31478:6;31443:9;:42::i;33040:218::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;33149:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;33149:28:0;;::::1;;::::0;;33188:14:::1;:24:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;33223:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;33040:218::o;34239:171::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;34316:21:::1;:32:::0;;-1:-1:-1;;;;34316:32:0::1;-1:-1:-1::0;;;34316:32:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;34364:38:::1;::::0;4909:41:1;;;34364:38:0::1;::::0;4882:18:1;34364:38:0::1;;;;;;;34239:171:::0;:::o;34541:112::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34610:27:0::1;34640:5;34610:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;34610:35:0::1;::::0;;34541:112::o;32899:133::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32991:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;32991:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32899:133::o;20248:254::-;20005:6;;-1:-1:-1;;;;;20005:6:0;193:10;20005:22;19997:67;;;;-1:-1:-1;;;19997:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20337:22:0;::::1;20329:73;;;::::0;-1:-1:-1;;;20329:73:0;;6815:2:1;20329: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;;20329:73:0::1;6613:402:1::0;20329:73:0::1;20449:6;::::0;;20428:38:::1;::::0;-1:-1:-1;;;;;20428:38:0;;::::1;::::0;20449:6;::::1;::::0;20428:38:::1;::::0;::::1;20477:6;:17:::0;;-1:-1:-1;;;;;;20477:17:0::1;-1:-1:-1::0;;;;;20477:17:0;;;::::1;::::0;;;::::1;::::0;;20248:254::o;37361:337::-;-1:-1:-1;;;;;37454:19:0;;37446:68;;;;-1:-1:-1;;;37446:68:0;;12604:2:1;37446: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;;37446:68:0;12402:400:1;37446:68:0;-1:-1:-1;;;;;37533:21:0;;37525:68;;;;-1:-1:-1;;;37525:68:0;;7222:2:1;37525: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;;37525:68:0;7020:398:1;37525:68:0;-1:-1:-1;;;;;37606:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;37658:32;;13366:25:1;;;37658:32:0;;13339:18:1;37658:32:0;;;;;;;37361:337;;;:::o;37706:2045::-;-1:-1:-1;;;;;37828:18:0;;37820:68;;;;-1:-1:-1;;;37820:68:0;;12198:2:1;37820: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;;37820:68:0;11996:401:1;37820:68:0;-1:-1:-1;;;;;37907:16:0;;37899:64;;;;-1:-1:-1;;;37899:64:0;;6000:2:1;37899: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;;37899:64:0;5798:399:1;37899:64:0;37991:1;37982:6;:10;37974:64;;;;-1:-1:-1;;;37974:64:0;;11443:2:1;37974: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;;37974:64:0;11241:405:1;37974:64:0;38053:14;;;;38049:112;;;38107:13;;38092:11;:28;;38084:65;;;;-1:-1:-1;;;38084:65:0;;9147:2:1;38084:65:0;;;9129:21:1;9186:2;9166:18;;;9159:30;9225:26;9205:18;;;9198:54;9269:18;;38084:65:0;8945:348:1;38084:65:0;38174:20;38185:4;38191:2;38174:10;:20::i;:::-;38171:752;;;38215:15;;;;38211:348;;;38263:6;;-1:-1:-1;;;;;38255:14:0;;;38263:6;;38255:14;38251:293;;;-1:-1:-1;;;;;38301:13:0;;;;;;:9;:13;;;;;;38318:12;38301:29;;38293:38;;;;;;-1:-1:-1;;;;;38354:13:0;;;;;;:9;:13;;;;;38370:12;38354:28;;38251:293;;;-1:-1:-1;;;;;38439:15:0;;;;;;:9;:15;;;;;;38458:12;38439:31;;38431:40;;;;;;-1:-1:-1;;;;;38494:15:0;;;;;;:9;:15;;;;;38512:12;38494:30;;38251:293;38591:12;;38581:6;:22;;38573:75;;;;-1:-1:-1;;;38573:75:0;;9860:2:1;38573: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;;38573:75:0;9658:404:1;38573:75:0;38672:14;;-1:-1:-1;;;;;38666:20:0;;;38672:14;;38666:20;;;;:36;;-1:-1:-1;38696:6:0;;-1:-1:-1;;;;;38690:12:0;;;38696:6;;38690:12;;38666:36;38663:249;;;38723:32;38758:13;38768:2;38758:9;:13::i;:::-;38835:14;;38723:48;;-1:-1:-1;38798:33:0;38825:6;38723:48;38798:33;:::i;:::-;:51;;38790:106;;;;-1:-1:-1;;;38790:106:0;;10269:2:1;38790: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;;38790:106:0;10067:406:1;38790:106:0;38704:208;38663:249;38937:28;38968:24;38986:4;38968:9;:24::i;:::-;38937:55;;39040:12;;39016:20;:36;39013:112;;-1:-1:-1;39101:12:0;;39013:112;39196:29;;39241:16;;39172:53;;;;;-1:-1:-1;;;39241:16:0;;;;39240:17;:46;;;;-1:-1:-1;39280:6:0;;-1:-1:-1;;;;;39274:12:0;;;39280:6;;39274:12;39240:46;:84;;;;-1:-1:-1;39303:21:0;;-1:-1:-1;;;39303:21:0;;;;39240:84;39236:293;;;39355:19;39351:167;;;39418:29;;39395:52;;39466:36;39481:20;39466:14;:36::i;:::-;-1:-1:-1;;;;;39592:24:0;;39549:12;39592:24;;;:18;:24;;;;;;39564:4;;39592:24;;;:50;;-1:-1:-1;;;;;;39620:22:0;;;;;;:18;:22;;;;;;;;39592:50;39589:96;;;-1:-1:-1;39668:5:0;39589:96;39705:38;39720:4;39725:2;39728:6;39735:7;39705:14;:38::i;:::-;37809:1942;;;37706:2045;;;:::o;5156:192::-;5242:7;5278:12;5270:6;;;;5262:29;;;;-1:-1:-1;;;5262:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5302:9:0;5314:5;5318:1;5314;:5;:::i;:::-;5302:17;5156:192;-1:-1:-1;;;;;5156:192:0:o;5607:463::-;5665:7;5902:6;5898:47;;-1:-1:-1;5932:1:0;5925:8;;5898:47;5957:9;5969:5;5973:1;5969;:5;:::i;:::-;5957:17;-1:-1:-1;6002:1:0;5993:5;5997:1;5957:17;5993:5;:::i;:::-;:10;5985:56;;;;-1:-1:-1;;;5985:56:0;;10680:2:1;5985: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;;5985:56:0;10478:397:1;6546:132:0;6604:7;6631:39;6635:1;6638;6631:39;;;;;;;;;;;;;;;;;:3;:39::i;46353:163::-;46394:7;46415:15;46432;46451:19;:17;:19::i;:::-;46414:56;;-1:-1:-1;46414:56:0;-1:-1:-1;46488:20:0;46414:56;;46488:11;:20::i;:::-;46481:27;;;;46353:163;:::o;4253:181::-;4311:7;;4343:5;4347:1;4343;:5;:::i;:::-;4331:17;;4372:1;4367;:6;;4359:46;;;;-1:-1:-1;;;4359:46:0;;8029:2:1;4359:46:0;;;8011:21:1;8068:2;8048:18;;;8041:30;8107:29;8087:18;;;8080:57;8154:18;;4359:46:0;7827:351:1;45149:419:0;45208:7;45217;45226;45235;45244;45253;45274:23;45299:12;45313:18;45335:20;45347:7;45335:11;:20::i;:::-;45273:82;;;;;;45367:15;45384:23;45409:12;45425:50;45437:7;45446:4;45452:10;45464;:8;:10::i;:::-;45425:11;:50::i;:::-;45366:109;;;;-1:-1:-1;45366:109:0;;-1:-1:-1;45526:15:0;;-1:-1:-1;45543:4:0;;-1:-1:-1;45549:10:0;;-1:-1:-1;45149:419:0;;-1:-1:-1;;;;;45149:419:0:o;4717:136::-;4775:7;4802:43;4806:1;4809;4802:43;;;;;;;;;;;;;;;;;:3;:43::i;34899:330::-;34967:4;19943:6;;-1:-1:-1;;;;;34991:15:0;;;19943:6;;34991:15;;;;:45;;-1:-1:-1;19916:7:0;19943:6;-1:-1:-1;;;;;35023:13:0;;;19943:6;;35023:13;;34991:45;:84;;;;-1:-1:-1;;;;;;35054:21:0;;;;;;:17;:21;;;;;;;;35053:22;34991:84;:125;;;;-1:-1:-1;;;;;;35093:23:0;;;;;;:17;:23;;;;;;;;35092:24;34991:125;:159;;;;-1:-1:-1;35139:11:0;;-1:-1:-1;;;;;35133:17:0;;;35139:11;;35133:17;;34991:159;:192;;;;-1:-1:-1;;;;;;35167:16:0;;;;34991:192;:230;;;;-1:-1:-1;;;;;;;;35200:21:0;35216:4;35200:21;;;34899:330::o;39759:1315::-;24416:16;:23;;-1:-1:-1;;;;24416:23:0;-1:-1:-1;;;24416:23:0;;;39864:13:::1;::::0;39848::::1;::::0;:29:::1;::::0;39864:13;39848:29:::1;:::i;:::-;39844:60;;39897:7;;39844:60;39914:19;39936:77;39980:32;39998:13;;39980;;:17;;:32;;;;:::i;:::-;39961:13;::::0;39936:39:::1;::::0;:20;;:24:::1;:39::i;:77::-;39914:99:::0;-1:-1:-1;40024:17:0::1;40044:37;:20:::0;39914:99;40044:24:::1;:37::i;:::-;40024:57:::0;-1:-1:-1;40145:12:0::1;40160:16;40024:57:::0;40174:1:::1;40160:13;:16::i;:::-;40145:31:::0;-1:-1:-1;40187:17:0::1;40207:19;:9:::0;40145:31;40207:13:::1;:19::i;:::-;40187:39:::0;-1:-1:-1;40529:21:0::1;40504:22;40618:21;:4:::0;40627:11;40618:8:::1;:21::i;:::-;40595:44;;40650:30;40667:12;40650:16;:30::i;:::-;40741:16;40760:41;:21;40786:14:::0;40760:25:::1;:41::i;:::-;40741:60:::0;-1:-1:-1;40812:24:0::1;40839:36;40862:12:::0;40839:18:::1;40741:60:::0;40852:4;40839:12:::1;:18::i;:36::-;40812:63;;40888:41;40901:9;40912:16;40888:12;:41::i;:::-;40947:49;::::0;;14589:25:1;;;14645:2;14630:18;;14623:34;;;14673:18;;;14666:34;;;40947:49:0::1;::::0;14577:2:1;14562:18;40947:49:0::1;;;;;;;41009:16;::::0;-1:-1:-1;;;;;41009:16:0::1;:57;41035:30;:8:::0;41048:16;41035:12:::1;:30::i;:::-;41009:57;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;39833:1241;;;;;;;;24450:1;-1:-1:-1::0;24462:16:0;:24;;-1:-1:-1;;;;24462:24:0;;;39759:1315::o;42737:1318::-;42897:16;;;;42893:984;;;-1:-1:-1;;;;;32860:23:0;;32836:4;32860:23;;;:14;:23;;;;;;;;43001:40;;;-1:-1:-1;;;;;;32860:23:0;;32836:4;32860:23;;;:14;:23;;;;;;;;43024:17;42997:107;;;43062:26;;-1:-1:-1;;;43062:26:0;;11853:2:1;43062:26:0;;;11835:21:1;11892:2;11872:18;;;11865:30;-1:-1:-1;;;11911:18:1;;;11904:46;11967:18;;43062:26:0;11651:340:1;42997:107:0;43194:16;;;;;;;43189:677;;43231:28;43250:4;43256:2;43231:18;:28::i;:::-;43287:16;;;;;;;43286:17;:41;;;;;43307:20;43318:4;43324:2;43307:10;:20::i;:::-;43282:145;;;43356:47;;-1:-1:-1;;;43356:47:0;;8385:2:1;43356: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;;43356:47:0;8183:401:1;43282:145:0;43189:677;;;43486:1;43471:12;;:16;:56;;;;-1:-1:-1;43521:6:0;;-1:-1:-1;;;;;43513:14:0;;;43521:6;;43513:14;43471:56;:102;;;;;43553:20;43564:4;43570:2;43553:10;:20::i;:::-;43467:384;;;43650:13;43635:12;;43620;:27;;;;:::i;:::-;:43;43616:216;;;-1:-1:-1;;;;;43692:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;43692:25:0;43713:4;43692:25;;;43744:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;43792:16:0;;-1:-1:-1;;;;;4113:32:1;;4095:51;;43792:16:0;;4083:2:1;4068:18;43792:16:0;;;;;;;43616:216;43893:7;43889:40;;43915:14;:12;:14::i;:::-;43950:35;43968:4;43974:2;43978:6;43950:17;:35::i;:::-;44010:7;44006:41;;44032:15;48467:19;;48453:11;:33;48513:21;;48497:13;:37;48561:21;;48545:13;:37;48409:181;44032:15;42737:1318;;;;:::o;7175:278::-;7261:7;7296:12;7289:5;7281:28;;;;-1:-1:-1;;;7281:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7320:9:0;7332:5;7336:1;7332;:5;:::i;46524:561::-;46621:7;;46657;;46574;;;;;46681:289;46705:9;:16;46701:20;;46681:289;;;46771:7;46747;:21;46755:9;46765:1;46755:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46755:12:0;46747:21;;;;;;;;;;;;;:31;;:66;;;46806:7;46782;:21;46790:9;46800:1;46790:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46790:12:0;46782:21;;;;;;;;;;;;;:31;46747:66;46743:97;;;46823:7;;46832;;46815:25;;;;;;;46524:561;;:::o;46743:97::-;46865:34;46877:7;:21;46885:9;46895:1;46885:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46885:12:0;46877:21;;;;;;;;;;;;;46865:7;;:11;:34::i;:::-;46855:44;;46924:34;46936:7;:21;46944:9;46954:1;46944:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;46944:12:0;46936:21;;;;;;;;;;;;;46924:7;;:11;:34::i;:::-;46914:44;-1:-1:-1;46723:3:0;;;;:::i;:::-;;;;46681:289;;;-1:-1:-1;47006:7:0;;46994;;:20;;:11;:20::i;:::-;46984:7;:30;46980:61;;;47024:7;;47033;;47016:25;;;;;;46524:561;;:::o;46980:61::-;47060:7;;47069;;-1:-1:-1;46524:561:0;-1:-1:-1;46524:561:0:o;45576:330::-;45636:7;45645;45654;45674:12;45689:24;45705:7;45689:15;:24::i;:::-;45674:39;;45724:18;45745:30;45767:7;45745:21;:30::i;:::-;45724:51;-1:-1:-1;45786:23:0;45812:33;45724:51;45812:17;:7;45824:4;45812:11;:17::i;:::-;:21;;:33::i;:::-;45786:59;45881:4;;-1:-1:-1;45887:10:0;;-1:-1:-1;45576:330:0;;-1:-1:-1;;;45576:330:0:o;45914:429::-;46029:7;;;;46085:24;:7;46097:11;46085;:24::i;:::-;46067:42;-1:-1:-1;46120:12:0;46135:21;:4;46144:11;46135:8;:21::i;:::-;46120:36;-1:-1:-1;46167:18:0;46188:27;:10;46203:11;46188:14;:27::i;:::-;46167:48;-1:-1:-1;46226:23:0;46252:33;46167:48;46252:17;:7;46264:4;46252:11;:17::i;:33::-;46304:7;;;;-1:-1:-1;46330:4:0;;-1:-1:-1;45914:429:0;;-1:-1:-1;;;;;;;45914:429:0:o;41082:573::-;41234:16;;;41248:1;41234:16;;;;;;;;41210:21;;41234:16;;;;;;;;;;-1:-1:-1;41234:16:0;41210:40;;41279:4;41261;41266:1;41261:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41261:23:0;;;:7;;;;;;;;;;:23;;;;41305:9;;:16;;;-1:-1:-1;;;41305:16:0;;;;:9;;;;;:14;;:16;;;;;41261:7;;41305:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41295:4;41300:1;41295:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41295:26:0;;;:7;;;;;;;;;:26;41366:9;;41334:56;;41351:4;;41366:9;41378:11;41334:8;:56::i;:::-;41429:9;;:218;;-1:-1:-1;;;41429:218:0;;-1:-1:-1;;;;;41429:9:0;;;;:60;;:218;;41504:11;;41429:9;;41574:4;;41601;;41621:15;;41429:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41663:505;41843:9;;41811:56;;41828:4;;-1:-1:-1;;;;;41843:9:0;41855:11;41811:8;:56::i;:::-;41910:9;;42108:11;;41910:250;;-1:-1:-1;;;41910:250:0;;41976:4;41910:250;;;4498:34:1;4548:18;;;4541:34;;;41910:9:0;4591:18:1;;;4584:34;;;4634:18;;;4627:34;-1:-1:-1;;;;;42108:11:0;;;4677:19:1;;;4670:44;42134:15:0;4730:19:1;;;4723:35;41910:9:0;;;:25;;41943:9;;4432:19:1;;41910:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;41663:505;;:::o;42176:480::-;42258:16;;;;;;;42257:17;42249:65;;;;-1:-1:-1;;;42249:65:0;;7625:2:1;42249: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;;42249:65:0;7423:399:1;42249:65:0;42330:20;42341:4;42347:2;42330:10;:20::i;:::-;42329:21;:37;;;;-1:-1:-1;42360:6:0;;-1:-1:-1;;;;;42354:12:0;;;42360:6;;42354:12;42329:37;42325:324;;;-1:-1:-1;;;;;42383:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;42383:30:0;42409:4;42383:30;;;;;;42428:16;:23;;-1:-1:-1;;42428:23:0;42383:30;42428:23;;;42481:12;42466;:27;42523:15;42508:12;:30;42555:28;;-1:-1:-1;;;;42555:28:0;-1:-1:-1;;;42555:28:0;;;42603:34;;4909:41:1;;;42603:34:0;;4882:18:1;42603:34:0;;;;;;;42176:480;;:::o;48063:334::-;48109:11;;:16;:38;;;;-1:-1:-1;48129:13:0;;:18;48109:38;48106:50;;;48063:334::o;48106:50::-;48198:11;;;48176:19;:33;48244:13;;;48220:21;:37;48292:13;;;48268:21;:37;-1:-1:-1;48318:15:0;;;;48344:17;;;;48372;48063:334::o;44063:1078::-;44162:15;44179:23;44204:12;44218:23;44243:12;44257:18;44279:19;44290:7;44279:10;:19::i;:::-;-1:-1:-1;;;;;44329:15:0;;;;;;:7;:15;;;;;;44161:137;;-1:-1:-1;44161:137:0;;-1:-1:-1;44161:137:0;;-1:-1:-1;44161:137:0;-1:-1:-1;44161:137:0;-1:-1:-1;44161:137:0;-1:-1:-1;44329:28:0;;44161:137;44329:19;:28::i;:::-;-1:-1:-1;;;;;44311:15:0;;;;;;;:7;:15;;;;;;:46;;;;44389:18;;;;;;;:39;;44412:15;44389:22;:39::i;:::-;-1:-1:-1;;;;;44368:18:0;;;;;;;:7;:18;;;;;;;;:60;;;;44445:19;;;;;:11;:19;;;;;;;:46;;;;-1:-1:-1;;;;;;44469:22:0;;;;;;:11;:22;;;;;;;;44468:23;44445:46;44441:477;;;-1:-1:-1;;;;;44526:15:0;;;;;;:7;:15;;;;;;:28;;44546:7;44526:19;:28::i;:::-;-1:-1:-1;;;;;44508:15:0;;;;;;:7;:15;;;;;:46;44441:477;;;-1:-1:-1;;;;;44577:19:0;;;;;;:11;:19;;;;;;;;44576:20;:46;;;;-1:-1:-1;;;;;;44600:22:0;;;;;;:11;:22;;;;;;;;44576:46;44572:346;;;-1:-1:-1;;;;;44660:18:0;;;;;;:7;:18;;;;;;:39;;44683:15;44660:22;:39::i;:::-;-1:-1:-1;;;;;44639:18:0;;;;;;:7;:18;;;;;:60;44572:346;;;-1:-1:-1;;;;;44723:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;44746:22:0;;;;;;:11;:22;;;;;;;;44723:45;44719:199;;;-1:-1:-1;;;;;44803:15:0;;;;;;:7;:15;;;;;;:28;;44823:7;44803:19;:28::i;:::-;-1:-1:-1;;;;;44785:15:0;;;;;;;:7;:15;;;;;;:46;;;;44867:18;;;;;;;:39;;44890:15;44867:22;:39::i;:::-;-1:-1:-1;;;;;44846:18:0;;;;;;:7;:18;;;;;:60;44719:199;44934:14;;44930:67;;44963:34;44978:6;44986:10;44963:14;:34::i;:::-;45019:1;45012:4;:8;:20;;;;45031:1;45024:4;:8;45012:20;45008:63;;;45047:24;45060:4;45066;45047:12;:24::i;:::-;45106:9;-1:-1:-1;;;;;45089:44:0;45098:6;-1:-1:-1;;;;;45089:44:0;;45117:15;45089:44;;;;13366:25:1;;13354:2;13339:18;;13220:177;45089:44:0;;;;;;;;44150:991;;;;;;44063:1078;;;:::o;47730:145::-;47794:7;47821:46;47850:16;;47821:24;47833:11;;47821:7;:11;;:24;;;;:::i;47883:172::-;47953:7;47980:67;48030:16;;47980:45;47992:32;48010:13;;47992;;:17;;:32;;;;:::i;:::-;47980:7;;:11;:45::i;47253:469::-;47332:19;47355:10;:8;:10::i;:::-;47332:33;-1:-1:-1;47376:18:0;47397:27;:10;47332:33;47397:14;:27::i;:::-;47476:4;47460:22;;;;:7;:22;;;;;;47376:48;;-1:-1:-1;47460:38:0;;47376:48;47460:26;:38::i;:::-;47451:4;47435:22;;;;:7;:22;;;;;;;;:63;;;;47512:11;:26;;;;;;47509:107;;;47594:4;47578:22;;;;:7;:22;;;;;;:38;;47605:10;47578:26;:38::i;:::-;47569:4;47553:22;;;;:7;:22;;;;;:63;47509:107;47632:43;;13366:25:1;;;47657:4:0;;-1:-1:-1;;;;;47632:43:0;;;;;13354:2:1;13339:18;47632:43:0;;;;;;;47321:401;;47253:469;;:::o;47093:148::-;47172:7;;:17;;47184:4;47172:11;:17::i;:::-;47162:7;:27;47213:10;;:20;;47228:4;47213:14;:20::i;:::-;47200:10;:33;-1:-1:-1;;47093: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://61446012b346ff4bdb4a3de7c88283990974d2a6db772194519a9707b94c6325
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.