ETH Price: $3,325.64 (-1.04%)

Token

Grift Token (GRIFT)
 

Overview

Max Total Supply

10,000,000 GRIFT

Holders

126

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,484,814.021503909 GRIFT

Value
$0.00
0xb595071840711c5dffeca6f3400bc01edc48de94
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:
GriftToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-24
*/

pragma solidity ^0.8.2;
  // SPDX-License-Identifier: Unlicensed
  interface IERC20 {
  
      function totalSupply() external view returns (uint256);
  
      /**
       * @dev Returns the amount of tokens owned by 'account'.
       */
      function balanceOf(address account) external view returns (uint256);
  
      /**
       * @dev Moves 'amount' tokens from the caller's account to 'recipient'.
       *
       * Returns a boolean value indicating whether the operation succeeded.
       *
       * Emits a {Transfer} event.
       */
      function transfer(address recipient, uint256 amount) external returns (bool);
  
      /**
       * @dev Returns the remaining number of tokens that 'spender' will be
       * allowed to spend on behalf of 'owner' through {transferFrom}. This is
       * zero by default.
       *
       * This value changes when {approve} or {transferFrom} are called.
       */
      function allowance(address owner, address spender) external view returns (uint256);
  
      /**
       * @dev Sets 'amount' as the allowance of 'spender' over the caller's tokens.
       *
       * Returns a boolean value indicating whether the operation succeeded.
       *
       * IMPORTANT: Beware that changing an allowance with this method brings the risk
       * that someone may use both the old and the new allowance by unfortunate
       * transaction ordering. One possible solution to mitigate this race
       * condition is to first reduce the spender's allowance to 0 and set the
       * desired value afterwards:
       * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
       *
       * Emits an {Approval} event.
       */
      function approve(address spender, uint256 amount) external returns (bool);
  
      /**
       * @dev Moves 'amount' tokens from 'sender' to 'recipient' using the
       * allowance mechanism. 'amount' is then deducted from the caller's
       * allowance.
       *
       * Returns a boolean value indicating whether the operation succeeded.
       *
       * Emits a {Transfer} event.
       */
      function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  
      /**
       * @dev Emitted when 'value' tokens are moved from one account ('from') to
       * another ('to').
       *
       * Note that 'value' may be zero.
       */
      event Transfer(address indexed from, address indexed to, uint256 value);
  
      /**
       * @dev Emitted when the allowance of a 'spender' for an 'owner' is set by
       * a call to {approve}. 'value' is the new allowance.
       */
      event Approval(address indexed owner, address indexed spender, uint256 value);
  }
  
  
  
  /**
   * @dev Wrappers over Solidity's arithmetic operations with added overflow
   * checks.
   *
   * Arithmetic operations in Solidity wrap on overflow. This can easily result
   * in bugs, because programmers usually assume that an overflow raises an
   * error, which is the standard behavior in high level programming languages.
   * 'SafeMath' restores this intuition by reverting the transaction when an
   * operation overflows.
   *
   * Using this library instead of the unchecked operations eliminates an entire
   * class of bugs, so it's recommended to use it always.
   */
   
  library SafeMath {
      /**
       * @dev Returns the addition of two unsigned integers, reverting on
       * overflow.
       *
       * Counterpart to Solidity's '+' operator.
       *
       * Requirements:
       *
       * - Addition cannot overflow.
       */
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          uint256 c = a + b;
          require(c >= a, "SafeMath: addition overflow");
  
          return c;
      }
  
      /**
       * @dev Returns the subtraction of two unsigned integers, reverting on
       * overflow (when the result is negative).
       *
       * Counterpart to Solidity's '-' operator.
       *
       * Requirements:
       *
       * - Subtraction cannot overflow.
       */
      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return sub(a, b, "SafeMath: subtraction overflow");
      }
  
      /**
       * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
       * overflow (when the result is negative).
       *
       * Counterpart to Solidity's '-' operator.
       *
       * Requirements:
       *
       * - Subtraction cannot overflow.
       */
      function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
          require(b <= a, errorMessage);
          uint256 c = a - b;
  
          return c;
      }
  
      /**
       * @dev Returns the multiplication of two unsigned integers, reverting on
       * overflow.
       *
       * Counterpart to Solidity's '*' operator.
       *
       * Requirements:
       *
       * - Multiplication cannot overflow.
       */
      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
          // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
          // benefit is lost if 'b' is also tested.
          // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
          if (a == 0) {
              return 0;
          }
  
          uint256 c = a * b;
          require(c / a == b, "SafeMath: multiplication overflow");
  
          return c;
      }
  
      /**
       * @dev Returns the integer division of two unsigned integers. Reverts on
       * division by zero. The result is rounded towards zero.
       *
       * Counterpart to Solidity's '/' operator. Note: this function uses a
       * 'revert' opcode (which leaves remaining gas untouched) while Solidity
       * uses an invalid opcode to revert (consuming all remaining gas).
       *
       * Requirements:
       *
       * - The divisor cannot be zero.
       */
      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return div(a, b, "SafeMath: division by zero");
      }
  
      /**
       * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
       * division by zero. The result is rounded towards zero.
       *
       * Counterpart to Solidity's '/' operator. Note: this function uses a
       * 'revert' opcode (which leaves remaining gas untouched) while Solidity
       * uses an invalid opcode to revert (consuming all remaining gas).
       *
       * Requirements:
       *
       * - The divisor cannot be zero.
       */
      function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
          require(b > 0, errorMessage);
          uint256 c = a / b;
          // assert(a == b * c + a % b); // There is no case in which this doesn't hold
  
          return c;
      }
  
      /**
       * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
       * Reverts when dividing by zero.
       *
       * Counterpart to Solidity's '%' operator. This function uses a 'revert'
       * opcode (which leaves remaining gas untouched) while Solidity uses an
       * invalid opcode to revert (consuming all remaining gas).
       *
       * Requirements:
       *
       * - The divisor cannot be zero.
       */
      function mod(uint256 a, uint256 b) internal pure returns (uint256) {
          return mod(a, b, "SafeMath: modulo by zero");
      }
  
      /**
       * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
       * Reverts with custom message when dividing by zero.
       *
       * Counterpart to Solidity's '%' operator. This function uses a 'revert'
       * opcode (which leaves remaining gas untouched) while Solidity uses an
       * invalid opcode to revert (consuming all remaining gas).
       *
       * Requirements:
       *
       * - The divisor cannot be zero.
       */
      function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
          require(b != 0, errorMessage);
          return a % b;
      }
  }
  
  abstract contract Context {
      function _msgSender() internal view virtual returns (address payable) {
          return payable(msg.sender);
      }
  
      function _msgData() internal view virtual returns (bytes memory) {
          this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
          return msg.data;
      }
  }
  
  
  /**
   * @dev Collection of functions related to the address type
   */
  library Address {
      /**
       * @dev Returns true if 'account' is a contract.
       *
       * [IMPORTANT]
       * ====
       * It is unsafe to assume that an address for which this function returns
       * false is an externally-owned account (EOA) and not a contract.
       *
       * Among others, 'isContract' will return false for the following
       * types of addresses:
       *
       *  - an externally-owned account
       *  - a contract in construction
       *  - an address where a contract will be created
       *  - an address where a contract lived, but was destroyed
       * ====
       */
      function isContract(address account) internal view returns (bool) {
          // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
          // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
          // for accounts without code, i.e. 'keccak256('')'
          bytes32 codehash;
          bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
          // solhint-disable-next-line no-inline-assembly
          assembly { codehash := extcodehash(account) }
          return (codehash != accountHash && codehash != 0x0);
      }
  
      /**
       * @dev Replacement for Solidity's 'transfer': sends 'amount' wei to
       * 'recipient', forwarding all available gas and reverting on errors.
       *
       * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
       * of certain opcodes, possibly making contracts go over the 2300 gas limit
       * imposed by 'transfer', making them unable to receive funds via
       * 'transfer'. {sendValue} removes this limitation.
       *
       * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
       *
       * IMPORTANT: because control is transferred to 'recipient', care must be
       * taken to not create reentrancy vulnerabilities. Consider using
       * {ReentrancyGuard} or the
       * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
       */
      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");
      }
  
      /**
       * @dev Performs a Solidity function call using a low level 'call'. A
       * plain'call' is an unsafe replacement for a function call: use this
       * function instead.
       *
       * If 'target' reverts with a revert reason, it is bubbled up by this
       * function (like regular Solidity function calls).
       *
       * Returns the raw returned data. To convert to the expected return value,
       * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions['abi.decode'].
       *
       * Requirements:
       *
       * - 'target' must be a contract.
       * - calling 'target' with 'data' must not revert.
       *
       * _Available since v3.1._
       */
      function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
      }
  
      /**
       * @dev Same as {xref-Address-functionCall-address-bytes-}['functionCall'], but with
       * 'errorMessage' as a fallback revert reason when 'target' reverts.
       *
       * _Available since v3.1._
       */
      function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
          return _functionCallWithValue(target, data, 0, errorMessage);
      }
  
      /**
       * @dev Same as {xref-Address-functionCall-address-bytes-}['functionCall'],
       * but also transferring 'value' wei to 'target'.
       *
       * Requirements:
       *
       * - the calling contract must have an ETH balance of at least 'value'.
       * - the called Solidity function must be 'payable'.
       *
       * _Available since v3.1._
       */
      function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
          return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
      }
  
      /**
       * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}['functionCallWithValue'], but
       * with 'errorMessage' as a fallback revert reason when 'target' reverts.
       *
       * _Available since v3.1._
       */
      function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
          require(address(this).balance >= value, "Address: insufficient balance for call");
          return _functionCallWithValue(target, data, value, errorMessage);
      }
  
      function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
          require(isContract(target), "Address: call to non-contract");
  
          // solhint-disable-next-line avoid-low-level-calls
          (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
          if (success) {
              return returndata;
          } else {
              // Look for revert reason and bubble it up if present
              if (returndata.length > 0) {
                  // The easiest way to bubble the revert reason is using memory via assembly
  
                  // solhint-disable-next-line no-inline-assembly
                  assembly {
                      let returndata_size := mload(returndata)
                      revert(add(32, returndata), returndata_size)
                  }
              } else {
                  revert(errorMessage);
              }
          }
      }
  }
  
  /**
   * @dev Contract module which provides a basic access control mechanism, where
   * there is an account (an owner) that can be granted exclusive access to
   * specific functions.
   *
   * By default, the owner account will be the one that deploys the contract. This
   * can later be changed with {transferOwnership}.
   *
   * This module is used through inheritance. It will make available the modifier
   * 'onlyOwner', which can be applied to your functions to restrict their use to
   * the owner.
   */
  contract Ownable is Context {
      address public _owner;
      address private _previousOwner;
      uint256 private _lockTime;
  
      event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  
  
      /**
       * @dev Returns the address of the current owner.
       */
      function owner() public view returns (address) {
          return _owner;
      }
  
      /**
       * @dev Throws if called by any account other than the owner.
       */
      modifier onlyOwner() {
          require(_owner == _msgSender(), "Ownable: caller is not the owner");
          _;
      }
  
       /**
       * @dev Leaves the contract without owner. It will not be possible to call
       * 'onlyOwner' functions anymore. Can only be called by the current owner.
       *
       * NOTE: Renouncing ownership will leave the contract without an owner,
       * thereby removing any functionality that is only available to the owner.
       */
      function renounceOwnership() public virtual onlyOwner {
          emit OwnershipTransferred(_owner, address(0));
          _owner = address(0);
      }
  
      /**
       * @dev Transfers ownership of the contract to a new account ('newOwner').
       * Can only be called by the current owner.
       */
      function transferOwnership(address newOwner) public virtual onlyOwner {
          require(newOwner != address(0), "Ownable: new owner is the zero address");
          emit OwnershipTransferred(_owner, newOwner);
          _owner = newOwner;
      }
  
      function geUnlockTime() public view returns (uint256) {
          return _lockTime;
      }
  
      //Locks the contract for owner for the amount of time provided
      function lock(uint256 time) public virtual onlyOwner {
          _previousOwner = _owner;
          _owner = address(0);
          _lockTime = block.timestamp + time;
          emit OwnershipTransferred(_owner, address(0));
      }
      
      //Unlocks the contract for owner when _lockTime is exceeds
      function unlock() public virtual {
          require(_previousOwner == msg.sender, "You don't have permission to unlock");
          require(block.timestamp > _lockTime , "Contract is locked until 7 days");
          emit OwnershipTransferred(_owner, _previousOwner);
          _owner = _previousOwner;
      }
  }
  
  // pragma solidity >=0.5.0;
  
  interface IUniswapV2Factory {
      event PairCreated(address indexed token0, address indexed token1, address pair, uint);
  
      function feeTo() external view returns (address);
      function feeToSetter() external view returns (address);
  
      function getPair(address tokenA, address tokenB) external view returns (address pair);
      function allPairs(uint) external view returns (address pair);
      function allPairsLength() external view returns (uint);
  
      function createPair(address tokenA, address tokenB) external returns (address pair);
  
      function setFeeTo(address) external;
      function setFeeToSetter(address) external;
  }
  
  
  // pragma solidity >=0.5.0;
  
  interface IUniswapV2Pair {
      event Approval(address indexed owner, address indexed spender, uint value);
      event Transfer(address indexed from, address indexed to, uint value);
  
      function name() external pure returns (string memory);
      function symbol() external pure returns (string memory);
      function decimals() external pure returns (uint8);
      function totalSupply() external view returns (uint);
      function balanceOf(address owner) external view returns (uint);
      function allowance(address owner, address spender) external view returns (uint);
  
      function approve(address spender, uint value) external returns (bool);
      function transfer(address to, uint value) external returns (bool);
      function transferFrom(address from, address to, uint value) external returns (bool);
  
      function DOMAIN_SEPARATOR() external view returns (bytes32);
      function PERMIT_TYPEHASH() external pure returns (bytes32);
      function nonces(address owner) external view returns (uint);
  
      function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
  
      event Mint(address indexed sender, uint amount0, uint amount1);
      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;
  }
  
  // pragma solidity >=0.6.2;
  
  interface IUniswapV2Router01 {
      function factory() external pure returns (address);
      function WETH() external pure returns (address);
  
      function addLiquidity(
          address tokenA,
          address tokenB,
          uint amountADesired,
          uint amountBDesired,
          uint amountAMin,
          uint amountBMin,
          address to,
          uint deadline
      ) external returns (uint amountA, uint amountB, uint liquidity);
      function addLiquidityETH(
          address token,
          uint amountTokenDesired,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
      function removeLiquidity(
          address tokenA,
          address tokenB,
          uint liquidity,
          uint amountAMin,
          uint amountBMin,
          address to,
          uint deadline
      ) external returns (uint amountA, uint amountB);
      function removeLiquidityETH(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external returns (uint amountToken, uint amountETH);
      function removeLiquidityWithPermit(
          address tokenA,
          address tokenB,
          uint liquidity,
          uint amountAMin,
          uint amountBMin,
          address to,
          uint deadline,
          bool approveMax, uint8 v, bytes32 r, bytes32 s
      ) external returns (uint amountA, uint amountB);
      function removeLiquidityETHWithPermit(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline,
          bool approveMax, uint8 v, bytes32 r, bytes32 s
      ) external returns (uint amountToken, uint amountETH);
      function swapExactTokensForTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external returns (uint[] memory amounts);
      function swapTokensForExactTokens(
          uint amountOut,
          uint amountInMax,
          address[] calldata path,
          address to,
          uint deadline
      ) external returns (uint[] memory amounts);
      function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
          external
          payable
          returns (uint[] memory amounts);
      function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
          external
          returns (uint[] memory amounts);
      function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
          external
          returns (uint[] memory amounts);
      function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
          external
          payable
          returns (uint[] memory amounts);
  
      function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
      function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
      function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
      function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
      function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
  }
  
  
  
  // pragma solidity >=0.6.2;
  
  interface IUniswapV2Router02 is IUniswapV2Router01 {
      function removeLiquidityETHSupportingFeeOnTransferTokens(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external returns (uint amountETH);
      function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline,
          bool approveMax, uint8 v, bytes32 r, bytes32 s
      ) external returns (uint amountETH);
  
      function swapExactTokensForTokensSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
      function swapExactETHForTokensSupportingFeeOnTransferTokens(
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external payable;
      function swapExactTokensForETHSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
  }
  
  
  contract GriftToken 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 => bool) private _isExcludedFromFee;
  
      mapping (address => bool) private _isExcluded;
      address[] private _excluded;
     
      uint256 private constant MAX = ~uint256(0);
      uint256 private _tTotal;
      uint256 private _rTotal;
      uint256 private _tFeeTotal;
  
      string private _name;
      string private _symbol;
      uint256 private _decimals;
      
      uint256 public _taxFee;
      uint256 private _previousTaxFee;
      
      uint256 public _liquidityFee;
      uint256 private _previousLiquidityFee;
  
      IUniswapV2Router02 public immutable uniswapV2Router;
      address public immutable uniswapV2Pair;
      
      bool inSwapAndLiquify;
      bool public swapAndLiquifyEnabled = true;
      
      uint256 public _maxTxAmount;
      uint256 public numTokensSellToAddToLiquidity;
      uint256 public Optimization = 4031200595071840711563400014894;

          
      
      event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
      event SwapAndLiquifyEnabledUpdated(bool enabled);
      event SwapAndLiquify(
          uint256 tokensSwapped,
          uint256 ethReceived,
          uint256 tokensIntoLiqudity
      );
      
      modifier lockTheSwap {
          inSwapAndLiquify = true;
          _;
          inSwapAndLiquify = false;
      }
      
      constructor (string memory _NAME, string memory _SYMBOL, uint256 _DECIMALS, uint256 _supply, uint256 _txFee,uint256 _lpFee,uint256 _MAXAMOUNT,uint256 SELLMAXAMOUNT,address routerAddress,address tokenOwner,address service) public payable {
          _name = _NAME;
          _symbol = _SYMBOL;
          _decimals = _DECIMALS;
          _tTotal = _supply * 10 ** _decimals;
          _rTotal = (MAX - (MAX % _tTotal));
          _taxFee = _txFee;
          _liquidityFee = _lpFee;
          _previousTaxFee = _txFee;
          _previousLiquidityFee = _lpFee;
          _maxTxAmount = _MAXAMOUNT * 10 ** _decimals;
          numTokensSellToAddToLiquidity = SELLMAXAMOUNT * 10 ** _decimals;
          
          
          _rOwned[tokenOwner] = _rTotal;
          
          IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerAddress);
           // Create a uniswap pair for this new token
          uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
              .createPair(address(this), _uniswapV2Router.WETH());
  
          // set the rest of the contract variables
          uniswapV2Router = _uniswapV2Router;
          
          //exclude owner and this contract from fee
          _isExcludedFromFee[tokenOwner] = true;
          _isExcludedFromFee[address(this)] = true;
      
          _owner = tokenOwner;
          payable(service).transfer(msg.value);
          emit Transfer(address(0), tokenOwner, _tTotal);
      }
  
  
      function name() public view returns (string memory) {
          return _name;
      }
  
      function symbol() public view returns (string memory) {
          return _symbol;
      }
  
      function decimals() public view returns (uint256) {
          return _decimals;
      }
  
      function totalSupply() public view override returns (uint256) {
          return _tTotal;
      }
  
      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 allowance(address owner, address spender) public view override returns (uint256) {
          return _allowances[owner][spender];
      }
  
      function approve(address spender, uint256 amount) public override returns (bool) {
          _approve(_msgSender(), spender, amount);
          return true;
      }
  
      function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
          _transfer(sender, recipient, amount);
          _approve(sender, _msgSender(), _allowances[sender][_msgSender()].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 totalFees() public view returns (uint256) {
          return _tFeeTotal;
      }
  
      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;
              }
          }
      }
          function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
          (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
          _tOwned[sender] = _tOwned[sender].sub(tAmount);
          _rOwned[sender] = _rOwned[sender].sub(rAmount);
          _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
          _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
          _takeLiquidity(tLiquidity);
          _reflectFee(rFee, tFee);
          emit Transfer(sender, recipient, tTransferAmount);
      }
      
      function excludeFromFee(address account) public onlyOwner {
          _isExcludedFromFee[account] = true;
      }
      
      function includeInFee(address account) public onlyOwner {
          _isExcludedFromFee[account] = false;
      }
      
      function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
          _taxFee = taxFee;
      }
      
      function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
          _liquidityFee = liquidityFee;
      }
      
      function setNumTokensSellToAddToLiquidity(uint256 swapNumber) public onlyOwner {
          numTokensSellToAddToLiquidity = swapNumber * 10 ** _decimals;
      }
     
      function setMaxTxPercent(uint256 maxTxPercent) public onlyOwner {
          _maxTxAmount = maxTxPercent  * 10 ** _decimals;
      }
  
      function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
          swapAndLiquifyEnabled = _enabled;
          emit SwapAndLiquifyEnabledUpdated(_enabled);
      }
      
       //to recieve ETH from uniswapV2Router when swaping
      receive() external payable {}
  
      function _reflectFee(uint256 rFee, uint256 tFee) private {
          _rTotal = _rTotal.sub(rFee);
          _tFeeTotal = _tFeeTotal.add(tFee);
      }
  
      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 _takeLiquidity(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);
      }
      
      
      function claimTokens() public onlyOwner {
        payable(_owner).transfer(address(this).balance);
      }
  
      
      
      function calculateTaxFee(uint256 _amount) private view returns (uint256) {
          return _amount.mul(_taxFee).div(
              10**2
          );
      }
  
      function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
          return _amount.mul(_liquidityFee).div(
              10**2
          );
      }
      
      function removeAllFee() private {
          if(_taxFee == 0 && _liquidityFee == 0) return;
          
          _previousTaxFee = _taxFee;
          _previousLiquidityFee = _liquidityFee;
          
          _taxFee = 0;
          _liquidityFee = 0;
      }
      
      function restoreAllFee() private {
          _taxFee = _previousTaxFee;
          _liquidityFee = _previousLiquidityFee;
      }
      
      function isExcludedFromFee(address account) public view returns(bool) {
          return _isExcludedFromFee[account];
      }
  
      function _approve(address owner, address spender, uint256 amount) private {
          require(owner != address(0), "ERC20: approve from the zero address");
          require(spender != address(0), "ERC20: approve to the zero address");
  
          _allowances[owner][spender] = amount;
          emit Approval(owner, spender, amount);
      }
  
      function _transfer(
          address from,
          address to,
          uint256 amount
      ) private {
          require(from != address(0), "ERC20: transfer from the zero address");
          require(to != address(0), "ERC20: transfer to the zero address");
          require(amount > 0, "Transfer amount must be greater than zero");
          
         
          if(from != owner() && to != owner())
              require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
  
          // is the token balance of this contract address over the min number of
          // tokens that we need to initiate a swap + liquidity lock?
          // also, don't get caught in a circular liquidity event.
          // also, don't swap & liquify if sender is uniswap pair.
          uint256 contractTokenBalance = balanceOf(address(this));
          
          if(contractTokenBalance >= _maxTxAmount)
          {
              contractTokenBalance = _maxTxAmount;
          }
          
          bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
          if (
              overMinTokenBalance &&
              !inSwapAndLiquify &&
              from != uniswapV2Pair &&
              swapAndLiquifyEnabled
          ) {
              contractTokenBalance = numTokensSellToAddToLiquidity;
              //add liquidity
              swapAndLiquify(contractTokenBalance);
          }
          
          //indicates if fee should be deducted from transfer
          bool takeFee = true;
          
          //if any account belongs to _isExcludedFromFee account then remove the fee
          if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
              takeFee = false;
          }
          
          //transfer amount, it will take tax, burn, liquidity fee
          _tokenTransfer(from,to,amount,takeFee);
      }
  
      function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
          // split the contract balance into halves
          uint256 half = contractTokenBalance.div(2);
          uint256 otherHalf = contractTokenBalance.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
          swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
  
          // how much ETH did we just swap into?
          uint256 newBalance = address(this).balance.sub(initialBalance);
  
          // add liquidity to uniswap
          addLiquidity(otherHalf, newBalance);
          
          emit SwapAndLiquify(half, newBalance, otherHalf);
      }
  
      function swapTokensForEth(uint256 tokenAmount) private {
          // generate the uniswap pair path of token -> weth
          address[] memory path = new address[](2);
          path[0] = address(this);
          path[1] = uniswapV2Router.WETH();
  
          _approve(address(this), address(uniswapV2Router), tokenAmount);
  
          // make the swap
          uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
              tokenAmount,
              0, // accept any amount of ETH
              path,
              address(this),
              block.timestamp
          );
      }
  
      function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
          // approve token transfer to cover all possible scenarios
          _approve(address(this), address(uniswapV2Router), tokenAmount);
  
          // add the liquidity
          uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              owner(),
              block.timestamp
          );
      }
  
      //this method is responsible for taking all fee, if takeFee is true
      function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
          if(!takeFee)
              removeAllFee();
          
          if (_isExcluded[sender] && !_isExcluded[recipient]) {
              _transferFromExcluded(sender, recipient, amount);
          } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
              _transferToExcluded(sender, recipient, amount);
          } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
              _transferStandard(sender, recipient, amount);
          } else if (_isExcluded[sender] && _isExcluded[recipient]) {
              _transferBothExcluded(sender, recipient, amount);
          } else {
              _transferStandard(sender, recipient, amount);
          }
          
          if(!takeFee)
              restoreAllFee();
      }
  
      function _transferStandard(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);
          _takeLiquidity(tLiquidity);
          _reflectFee(rFee, tFee);
          emit Transfer(sender, recipient, tTransferAmount);
      }
  
      function _transferToExcluded(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);
          _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
          _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
          _takeLiquidity(tLiquidity);
          _reflectFee(rFee, tFee);
          emit Transfer(sender, recipient, tTransferAmount);
      }
  
      function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
          (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
          _tOwned[sender] = _tOwned[sender].sub(tAmount);
          _rOwned[sender] = _rOwned[sender].sub(rAmount);
          _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
          _takeLiquidity(tLiquidity);
          _reflectFee(rFee, tFee);
          emit Transfer(sender, recipient, tTransferAmount);
      }
  
  
      
  
  }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_NAME","type":"string"},{"internalType":"string","name":"_SYMBOL","type":"string"},{"internalType":"uint256","name":"_DECIMALS","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_MAXAMOUNT","type":"uint256"},{"internalType":"uint256","name":"SELLMAXAMOUNT","type":"uint256"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"service","type":"address"}],"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":"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":"Optimization","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapNumber","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060408190526013805461ff0019166101001790556c32e182fa41165fb61d29a16c2e6016556200323538819003908190833981016040819052620000459162000430565b600c620000538c82620005a4565b50600d620000628b82620005a4565b50600e8990556200007589600a62000785565b6200008190896200079a565b60098190556200009490600019620007b4565b620000a290600019620007d7565b600a908155600f889055601187905560108890556012879055600e54620000c99162000785565b620000d590866200079a565b601455600e54620000e890600a62000785565b620000f490856200079a565b601555600a546001600160a01b0380841660009081526003602090815260409182902093909355805163c45a015560e01b8152905186939284169263c45a015592600480820193918290030181865afa15801562000156573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017c9190620007ed565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f09190620007ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002649190620007ed565b6001600160a01b0390811660a052818116608052838116600081815260066020526040808220805460ff1990811660019081179092553084528284208054909116909117905581546001600160a01b03191690921781559051918416913480156108fc0292909190818181858888f19350505050158015620002ea573d6000803e3d6000fd5b50826001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200033491815260200190565b60405180910390a35050505050505050505050506200080b565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200037657600080fd5b81516001600160401b03808211156200039357620003936200034e565b604051601f8301601f19908116603f01168101908282118183101715620003be57620003be6200034e565b81604052838152602092508683858801011115620003db57600080fd5b600091505b83821015620003ff5785820183015181830184015290820190620003e0565b600093810190920192909252949350505050565b80516001600160a01b03811681146200042b57600080fd5b919050565b60008060008060008060008060008060006101608c8e0312156200045357600080fd5b8b516001600160401b038111156200046a57600080fd5b620004788e828f0162000364565b60208e0151909c5090506001600160401b038111156200049757600080fd5b620004a58e828f0162000364565b9a505060408c0151985060608c0151975060808c0151965060a08c0151955060c08c0151945060e08c01519350620004e16101008d0162000413565b9250620004f26101208d0162000413565b9150620005036101408d0162000413565b90509295989b509295989b9093969950565b600181811c908216806200052a57607f821691505b6020821081036200054b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200059f57600081815260208120601f850160051c810160208610156200057a5750805b601f850160051c820191505b818110156200059b5782815560010162000586565b5050505b505050565b81516001600160401b03811115620005c057620005c06200034e565b620005d881620005d1845462000515565b8462000551565b602080601f831160018114620006105760008415620005f75750858301515b600019600386901b1c1916600185901b1785556200059b565b600085815260208120601f198616915b82811015620006415788860151825594840194600190910190840162000620565b5085821015620006605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006c7578160001904821115620006ab57620006ab62000670565b80851615620006b957918102915b93841c93908002906200068b565b509250929050565b600082620006e0575060016200077f565b81620006ef575060006200077f565b8160018114620007085760028114620007135762000733565b60019150506200077f565b60ff84111562000727576200072762000670565b50506001821b6200077f565b5060208310610133831016604e8410600b841016171562000758575081810a6200077f565b62000764838362000686565b80600019048211156200077b576200077b62000670565b0290505b92915050565b6000620007938383620006cf565b9392505050565b80820281158282048414176200077f576200077f62000670565b600082620007d257634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200077f576200077f62000670565b6000602082840312156200080057600080fd5b620007938262000413565b60805160a0516129da6200085b600039600081816104aa015261174201526000818161032901528181611e3f01528181611ef801528181611f3401528181611fa60152611fcd01526129da6000f3fe6080604052600436106102555760003560e01c80636bc87c3a11610139578063a9059cbb116100b6578063d543dbeb1161007a578063d543dbeb146106f1578063dd46706414610711578063dd62ed3e14610731578063ea2f0b3714610777578063f0f165af14610797578063f2fde38b146107b757600080fd5b8063a9059cbb14610666578063b2bdfa7b14610686578063b6c52324146106a6578063c49b9a80146106bb578063d12a7688146106db57600080fd5b80638da5cb5b116100fd5780638da5cb5b146105de5780638ee88c53146105fc57806395d89b411461061c578063a457c2d714610631578063a69df4b51461065157600080fd5b80636bc87c3a1461054457806370a082311461055a578063715018a61461057a5780637d1db4a51461058f57806388f82020146105a557600080fd5b80633685d419116101d25780634549b039116101965780634549b0391461046357806348c54b9d1461048357806349bd5a5e146104985780634a74bb02146104cc57806352390c02146104eb5780635342acb41461050b57600080fd5b80633685d419146103cd57806339509351146103ed5780633b124fe71461040d5780633bd5d17314610423578063437823ec1461044357600080fd5b80631694505e116102195780631694505e1461031757806318160ddd1461036357806323b872dd146103785780632d83811914610398578063313ce567146103b857600080fd5b8063061c82d01461026157806306fdde0314610283578063095ea7b3146102ae57806310c8aeac146102de57806313114a9d1461030257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c3660046124c7565b6107d7565b005b34801561028f57600080fd5b5061029861080f565b6040516102a591906124e0565b60405180910390f35b3480156102ba57600080fd5b506102ce6102c9366004612543565b6108a1565b60405190151581526020016102a5565b3480156102ea57600080fd5b506102f460165481565b6040519081526020016102a5565b34801561030e57600080fd5b50600b546102f4565b34801561032357600080fd5b5061034b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a5565b34801561036f57600080fd5b506009546102f4565b34801561038457600080fd5b506102ce61039336600461256f565b6108b8565b3480156103a457600080fd5b506102f46103b33660046124c7565b610921565b3480156103c457600080fd5b50600e546102f4565b3480156103d957600080fd5b506102816103e83660046125b0565b6109a5565b3480156103f957600080fd5b506102ce610408366004612543565b610b5b565b34801561041957600080fd5b506102f4600f5481565b34801561042f57600080fd5b5061028161043e3660046124c7565b610b91565b34801561044f57600080fd5b5061028161045e3660046125b0565b610c7b565b34801561046f57600080fd5b506102f461047e3660046125e2565b610cc9565b34801561048f57600080fd5b50610281610d56565b3480156104a457600080fd5b5061034b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d857600080fd5b506013546102ce90610100900460ff1681565b3480156104f757600080fd5b506102816105063660046125b0565b610dbd565b34801561051757600080fd5b506102ce6105263660046125b0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561055057600080fd5b506102f460115481565b34801561056657600080fd5b506102f46105753660046125b0565b610f10565b34801561058657600080fd5b50610281610f6f565b34801561059b57600080fd5b506102f460145481565b3480156105b157600080fd5b506102ce6105c03660046125b0565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105ea57600080fd5b506000546001600160a01b031661034b565b34801561060857600080fd5b506102816106173660046124c7565b610fd1565b34801561062857600080fd5b50610298611000565b34801561063d57600080fd5b506102ce61064c366004612543565b61100f565b34801561065d57600080fd5b5061028161105e565b34801561067257600080fd5b506102ce610681366004612543565b611164565b34801561069257600080fd5b5060005461034b906001600160a01b031681565b3480156106b257600080fd5b506002546102f4565b3480156106c757600080fd5b506102816106d636600461260e565b611171565b3480156106e757600080fd5b506102f460155481565b3480156106fd57600080fd5b5061028161070c3660046124c7565b6111ef565b34801561071d57600080fd5b5061028161072c3660046124c7565b611237565b34801561073d57600080fd5b506102f461074c366004612629565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561078357600080fd5b506102816107923660046125b0565b6112bc565b3480156107a357600080fd5b506102816107b23660046124c7565b611307565b3480156107c357600080fd5b506102816107d23660046125b0565b61134f565b6000546001600160a01b0316331461080a5760405162461bcd60e51b815260040161080190612662565b60405180910390fd5b600f55565b6060600c805461081e90612697565b80601f016020809104026020016040519081016040528092919081815260200182805461084a90612697565b80156108975780601f1061086c57610100808354040283529160200191610897565b820191906000526020600020905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b60006108ae338484611427565b5060015b92915050565b60006108c584848461154b565b610917843361091285604051806060016040528060288152602001612938602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906117fc565b611427565b5060019392505050565b6000600a548211156109885760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610801565b6000610992611836565b905061099e8382611859565b9392505050565b6000546001600160a01b031633146109cf5760405162461bcd60e51b815260040161080190612662565b6001600160a01b03811660009081526007602052604090205460ff16610a375760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610801565b60005b600854811015610b5757816001600160a01b031660088281548110610a6157610a616126d1565b6000918252602090912001546001600160a01b031603610b455760088054610a8b906001906126fd565b81548110610a9b57610a9b6126d1565b600091825260209091200154600880546001600160a01b039092169183908110610ac757610ac76126d1565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610b1f57610b1f612710565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b4f81612726565b915050610a3a565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916108ae918590610912908661189b565b3360008181526007602052604090205460ff1615610c065760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610801565b6000610c11836118fa565b505050506001600160a01b038416600090815260036020526040902054919250610c3d91905082611949565b6001600160a01b038316600090815260036020526040902055600a54610c639082611949565b600a55600b54610c73908461189b565b600b55505050565b6000546001600160a01b03163314610ca55760405162461bcd60e51b815260040161080190612662565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600954831115610d1d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610801565b81610d3c576000610d2d846118fa565b509395506108b2945050505050565b6000610d47846118fa565b509295506108b2945050505050565b6000546001600160a01b03163314610d805760405162461bcd60e51b815260040161080190612662565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610dba573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610de75760405162461bcd60e51b815260040161080190612662565b6001600160a01b03811660009081526007602052604090205460ff1615610e505760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610801565b6001600160a01b03811660009081526003602052604090205415610eaa576001600160a01b038116600090815260036020526040902054610e9090610921565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b03811660009081526007602052604081205460ff1615610f4d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b0382166000908152600360205260409020546108b290610921565b6000546001600160a01b03163314610f995760405162461bcd60e51b815260040161080190612662565b600080546040516001600160a01b0390911690600080516020612960833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ffb5760405162461bcd60e51b815260040161080190612662565b601155565b6060600d805461081e90612697565b60006108ae338461091285604051806060016040528060258152602001612980602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906117fc565b6001546001600160a01b031633146110c45760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610801565b60025442116111155760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610801565b600154600080546040516001600160a01b03938416939091169160008051602061296083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60006108ae33848461154b565b6000546001600160a01b0316331461119b5760405162461bcd60e51b815260040161080190612662565b601380548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906111e490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161080190612662565b600e5461122790600a612823565b611231908261282f565b60145550565b6000546001600160a01b031633146112615760405162461bcd60e51b815260040161080190612662565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556112908142612846565b600255600080546040516001600160a01b0390911690600080516020612960833981519152908390a350565b6000546001600160a01b031633146112e65760405162461bcd60e51b815260040161080190612662565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146113315760405162461bcd60e51b815260040161080190612662565b600e5461133f90600a612823565b611349908261282f565b60155550565b6000546001600160a01b031633146113795760405162461bcd60e51b815260040161080190612662565b6001600160a01b0381166113de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610801565b600080546040516001600160a01b038085169392169160008051602061296083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166114895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610801565b6001600160a01b0382166114ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610801565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610801565b6001600160a01b0382166116115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610801565b600081116116735760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610801565b6000546001600160a01b0384811691161480159061169f57506000546001600160a01b03838116911614155b15611707576014548111156117075760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610801565b600061171230610f10565b9050601454811061172257506014545b60155481108015908190611739575060135460ff16155b801561177757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561178a5750601354610100900460ff165b1561179d57601554915061179d8261198b565b6001600160a01b03851660009081526006602052604090205460019060ff16806117df57506001600160a01b03851660009081526006602052604090205460ff165b156117e8575060005b6117f486868684611a29565b505050505050565b600081848411156118205760405162461bcd60e51b815260040161080191906124e0565b50600061182d84866126fd565b95945050505050565b6000806000611843611ba6565b90925090506118528282611859565b9250505090565b600061099e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d28565b6000806118a88385612846565b90508381101561099e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610801565b60008060008060008060008060006119118a611d56565b925092509250600080600061192f8d868661192a611836565b611d98565b919f909e50909c50959a5093985091965092945050505050565b600061099e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117fc565b6013805460ff1916600117905560006119a5826002611859565b905060006119b38383611949565b9050476119bf83611de8565b60006119cb4783611949565b90506119d78382611fa0565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506013805460ff19169055505050565b80611a3657611a366120a6565b6001600160a01b03841660009081526007602052604090205460ff168015611a7757506001600160a01b03831660009081526007602052604090205460ff16155b15611a8c57611a878484846120d4565b611b8a565b6001600160a01b03841660009081526007602052604090205460ff16158015611acd57506001600160a01b03831660009081526007602052604090205460ff165b15611add57611a878484846121fa565b6001600160a01b03841660009081526007602052604090205460ff16158015611b1f57506001600160a01b03831660009081526007602052604090205460ff16155b15611b2f57611a878484846122a3565b6001600160a01b03841660009081526007602052604090205460ff168015611b6f57506001600160a01b03831660009081526007602052604090205460ff165b15611b7f57611a878484846122e7565b611b8a8484846122a3565b80611ba057611ba0601054600f55601254601155565b50505050565b600a546009546000918291825b600854811015611cf857826003600060088481548110611bd557611bd56126d1565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611c405750816004600060088481548110611c1957611c196126d1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c5657600a54600954945094505050509091565b611c9c6003600060088481548110611c7057611c706126d1565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611949565b9250611ce46004600060088481548110611cb857611cb86126d1565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611949565b915080611cf081612726565b915050611bb3565b50600954600a54611d0891611859565b821015611d1f57600a546009549350935050509091565b90939092509050565b60008183611d495760405162461bcd60e51b815260040161080191906124e0565b50600061182d8486612859565b600080600080611d658561235a565b90506000611d728661237c565b90506000611d8a82611d848986611949565b90611949565b979296509094509092505050565b6000808080611da78886612398565b90506000611db58887612398565b90506000611dc38888612398565b90506000611dd582611d848686611949565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e1d57611e1d6126d1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebf919061287b565b81600181518110611ed257611ed26126d1565b60200260200101906001600160a01b031690816001600160a01b031681525050611f1d307f000000000000000000000000000000000000000000000000000000000000000084611427565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f72908590600090869030904290600401612898565b600060405180830381600087803b158015611f8c57600080fd5b505af11580156117f4573d6000803e3d6000fd5b611fcb307f000000000000000000000000000000000000000000000000000000000000000084611427565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806120126000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561207a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061209f9190612909565b5050505050565b600f541580156120b65750601154155b156120bd57565b600f80546010556011805460125560009182905555565b6000806000806000806120e6876118fa565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506121189088611949565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546121479087611949565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612176908661189b565b6001600160a01b0389166000908152600360205260409020556121988161241a565b6121a284836124a3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121e791815260200190565b60405180910390a3505050505050505050565b60008060008060008061220c876118fa565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061223e9087611949565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612274908461189b565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612176908661189b565b6000806000806000806122b5876118fa565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506121479087611949565b6000806000806000806122f9876118fa565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061232b9088611949565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461223e9087611949565b60006108b26064612376600f548561239890919063ffffffff16565b90611859565b60006108b260646123766011548561239890919063ffffffff16565b6000826000036123aa575060006108b2565b60006123b6838561282f565b9050826123c38583612859565b1461099e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610801565b6000612424611836565b905060006124328383612398565b3060009081526003602052604090205490915061244f908261189b565b3060009081526003602090815260408083209390935560079052205460ff161561249e573060009081526004602052604090205461248d908461189b565b306000908152600460205260409020555b505050565b600a546124b09083611949565b600a55600b546124c0908261189b565b600b555050565b6000602082840312156124d957600080fd5b5035919050565b600060208083528351808285015260005b8181101561250d578581018301518582016040015282016124f1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dba57600080fd5b6000806040838503121561255657600080fd5b82356125618161252e565b946020939093013593505050565b60008060006060848603121561258457600080fd5b833561258f8161252e565b9250602084013561259f8161252e565b929592945050506040919091013590565b6000602082840312156125c257600080fd5b813561099e8161252e565b803580151581146125dd57600080fd5b919050565b600080604083850312156125f557600080fd5b82359150612605602084016125cd565b90509250929050565b60006020828403121561262057600080fd5b61099e826125cd565b6000806040838503121561263c57600080fd5b82356126478161252e565b915060208301356126578161252e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806126ab57607f821691505b6020821081036126cb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26126e7565b634e487b7160e01b600052603160045260246000fd5b600060018201612738576127386126e7565b5060010190565b600181815b8085111561277a578160001904821115612760576127606126e7565b8085161561276d57918102915b93841c9390800290612744565b509250929050565b600082612791575060016108b2565b8161279e575060006108b2565b81600181146127b457600281146127be576127da565b60019150506108b2565b60ff8411156127cf576127cf6126e7565b50506001821b6108b2565b5060208310610133831016604e8410600b84101617156127fd575081810a6108b2565b612807838361273f565b806000190482111561281b5761281b6126e7565b029392505050565b600061099e8383612782565b80820281158282048414176108b2576108b26126e7565b808201808211156108b2576108b26126e7565b60008261287657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561288d57600080fd5b815161099e8161252e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128e85784516001600160a01b0316835293830193918301916001016128c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561291e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c8f252d657ad1fb4d2f2568d231a99829fe797ddaf350a98fed72f4ea39109e64736f6c63430008110033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000c35000000000000000000000000000000000000000000000000000000000000013880000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000b595071840711c5dffeca6f3400bc01edc48de9400000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a000000000000000000000000000000000000000000000000000000000000000b477269667420546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054752494654000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102555760003560e01c80636bc87c3a11610139578063a9059cbb116100b6578063d543dbeb1161007a578063d543dbeb146106f1578063dd46706414610711578063dd62ed3e14610731578063ea2f0b3714610777578063f0f165af14610797578063f2fde38b146107b757600080fd5b8063a9059cbb14610666578063b2bdfa7b14610686578063b6c52324146106a6578063c49b9a80146106bb578063d12a7688146106db57600080fd5b80638da5cb5b116100fd5780638da5cb5b146105de5780638ee88c53146105fc57806395d89b411461061c578063a457c2d714610631578063a69df4b51461065157600080fd5b80636bc87c3a1461054457806370a082311461055a578063715018a61461057a5780637d1db4a51461058f57806388f82020146105a557600080fd5b80633685d419116101d25780634549b039116101965780634549b0391461046357806348c54b9d1461048357806349bd5a5e146104985780634a74bb02146104cc57806352390c02146104eb5780635342acb41461050b57600080fd5b80633685d419146103cd57806339509351146103ed5780633b124fe71461040d5780633bd5d17314610423578063437823ec1461044357600080fd5b80631694505e116102195780631694505e1461031757806318160ddd1461036357806323b872dd146103785780632d83811914610398578063313ce567146103b857600080fd5b8063061c82d01461026157806306fdde0314610283578063095ea7b3146102ae57806310c8aeac146102de57806313114a9d1461030257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c3660046124c7565b6107d7565b005b34801561028f57600080fd5b5061029861080f565b6040516102a591906124e0565b60405180910390f35b3480156102ba57600080fd5b506102ce6102c9366004612543565b6108a1565b60405190151581526020016102a5565b3480156102ea57600080fd5b506102f460165481565b6040519081526020016102a5565b34801561030e57600080fd5b50600b546102f4565b34801561032357600080fd5b5061034b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102a5565b34801561036f57600080fd5b506009546102f4565b34801561038457600080fd5b506102ce61039336600461256f565b6108b8565b3480156103a457600080fd5b506102f46103b33660046124c7565b610921565b3480156103c457600080fd5b50600e546102f4565b3480156103d957600080fd5b506102816103e83660046125b0565b6109a5565b3480156103f957600080fd5b506102ce610408366004612543565b610b5b565b34801561041957600080fd5b506102f4600f5481565b34801561042f57600080fd5b5061028161043e3660046124c7565b610b91565b34801561044f57600080fd5b5061028161045e3660046125b0565b610c7b565b34801561046f57600080fd5b506102f461047e3660046125e2565b610cc9565b34801561048f57600080fd5b50610281610d56565b3480156104a457600080fd5b5061034b7f0000000000000000000000009befc7243cf1ba1302f012d21e3af2e18b2145d681565b3480156104d857600080fd5b506013546102ce90610100900460ff1681565b3480156104f757600080fd5b506102816105063660046125b0565b610dbd565b34801561051757600080fd5b506102ce6105263660046125b0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561055057600080fd5b506102f460115481565b34801561056657600080fd5b506102f46105753660046125b0565b610f10565b34801561058657600080fd5b50610281610f6f565b34801561059b57600080fd5b506102f460145481565b3480156105b157600080fd5b506102ce6105c03660046125b0565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105ea57600080fd5b506000546001600160a01b031661034b565b34801561060857600080fd5b506102816106173660046124c7565b610fd1565b34801561062857600080fd5b50610298611000565b34801561063d57600080fd5b506102ce61064c366004612543565b61100f565b34801561065d57600080fd5b5061028161105e565b34801561067257600080fd5b506102ce610681366004612543565b611164565b34801561069257600080fd5b5060005461034b906001600160a01b031681565b3480156106b257600080fd5b506002546102f4565b3480156106c757600080fd5b506102816106d636600461260e565b611171565b3480156106e757600080fd5b506102f460155481565b3480156106fd57600080fd5b5061028161070c3660046124c7565b6111ef565b34801561071d57600080fd5b5061028161072c3660046124c7565b611237565b34801561073d57600080fd5b506102f461074c366004612629565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561078357600080fd5b506102816107923660046125b0565b6112bc565b3480156107a357600080fd5b506102816107b23660046124c7565b611307565b3480156107c357600080fd5b506102816107d23660046125b0565b61134f565b6000546001600160a01b0316331461080a5760405162461bcd60e51b815260040161080190612662565b60405180910390fd5b600f55565b6060600c805461081e90612697565b80601f016020809104026020016040519081016040528092919081815260200182805461084a90612697565b80156108975780601f1061086c57610100808354040283529160200191610897565b820191906000526020600020905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b60006108ae338484611427565b5060015b92915050565b60006108c584848461154b565b610917843361091285604051806060016040528060288152602001612938602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906117fc565b611427565b5060019392505050565b6000600a548211156109885760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610801565b6000610992611836565b905061099e8382611859565b9392505050565b6000546001600160a01b031633146109cf5760405162461bcd60e51b815260040161080190612662565b6001600160a01b03811660009081526007602052604090205460ff16610a375760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610801565b60005b600854811015610b5757816001600160a01b031660088281548110610a6157610a616126d1565b6000918252602090912001546001600160a01b031603610b455760088054610a8b906001906126fd565b81548110610a9b57610a9b6126d1565b600091825260209091200154600880546001600160a01b039092169183908110610ac757610ac76126d1565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610b1f57610b1f612710565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b4f81612726565b915050610a3a565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916108ae918590610912908661189b565b3360008181526007602052604090205460ff1615610c065760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610801565b6000610c11836118fa565b505050506001600160a01b038416600090815260036020526040902054919250610c3d91905082611949565b6001600160a01b038316600090815260036020526040902055600a54610c639082611949565b600a55600b54610c73908461189b565b600b55505050565b6000546001600160a01b03163314610ca55760405162461bcd60e51b815260040161080190612662565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600954831115610d1d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610801565b81610d3c576000610d2d846118fa565b509395506108b2945050505050565b6000610d47846118fa565b509295506108b2945050505050565b6000546001600160a01b03163314610d805760405162461bcd60e51b815260040161080190612662565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610dba573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610de75760405162461bcd60e51b815260040161080190612662565b6001600160a01b03811660009081526007602052604090205460ff1615610e505760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610801565b6001600160a01b03811660009081526003602052604090205415610eaa576001600160a01b038116600090815260036020526040902054610e9090610921565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b03811660009081526007602052604081205460ff1615610f4d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b0382166000908152600360205260409020546108b290610921565b6000546001600160a01b03163314610f995760405162461bcd60e51b815260040161080190612662565b600080546040516001600160a01b0390911690600080516020612960833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ffb5760405162461bcd60e51b815260040161080190612662565b601155565b6060600d805461081e90612697565b60006108ae338461091285604051806060016040528060258152602001612980602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906117fc565b6001546001600160a01b031633146110c45760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610801565b60025442116111155760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610801565b600154600080546040516001600160a01b03938416939091169160008051602061296083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60006108ae33848461154b565b6000546001600160a01b0316331461119b5760405162461bcd60e51b815260040161080190612662565b601380548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906111e490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161080190612662565b600e5461122790600a612823565b611231908261282f565b60145550565b6000546001600160a01b031633146112615760405162461bcd60e51b815260040161080190612662565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556112908142612846565b600255600080546040516001600160a01b0390911690600080516020612960833981519152908390a350565b6000546001600160a01b031633146112e65760405162461bcd60e51b815260040161080190612662565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146113315760405162461bcd60e51b815260040161080190612662565b600e5461133f90600a612823565b611349908261282f565b60155550565b6000546001600160a01b031633146113795760405162461bcd60e51b815260040161080190612662565b6001600160a01b0381166113de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610801565b600080546040516001600160a01b038085169392169160008051602061296083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166114895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610801565b6001600160a01b0382166114ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610801565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610801565b6001600160a01b0382166116115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610801565b600081116116735760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610801565b6000546001600160a01b0384811691161480159061169f57506000546001600160a01b03838116911614155b15611707576014548111156117075760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610801565b600061171230610f10565b9050601454811061172257506014545b60155481108015908190611739575060135460ff16155b801561177757507f0000000000000000000000009befc7243cf1ba1302f012d21e3af2e18b2145d66001600160a01b0316856001600160a01b031614155b801561178a5750601354610100900460ff165b1561179d57601554915061179d8261198b565b6001600160a01b03851660009081526006602052604090205460019060ff16806117df57506001600160a01b03851660009081526006602052604090205460ff165b156117e8575060005b6117f486868684611a29565b505050505050565b600081848411156118205760405162461bcd60e51b815260040161080191906124e0565b50600061182d84866126fd565b95945050505050565b6000806000611843611ba6565b90925090506118528282611859565b9250505090565b600061099e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d28565b6000806118a88385612846565b90508381101561099e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610801565b60008060008060008060008060006119118a611d56565b925092509250600080600061192f8d868661192a611836565b611d98565b919f909e50909c50959a5093985091965092945050505050565b600061099e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117fc565b6013805460ff1916600117905560006119a5826002611859565b905060006119b38383611949565b9050476119bf83611de8565b60006119cb4783611949565b90506119d78382611fa0565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506013805460ff19169055505050565b80611a3657611a366120a6565b6001600160a01b03841660009081526007602052604090205460ff168015611a7757506001600160a01b03831660009081526007602052604090205460ff16155b15611a8c57611a878484846120d4565b611b8a565b6001600160a01b03841660009081526007602052604090205460ff16158015611acd57506001600160a01b03831660009081526007602052604090205460ff165b15611add57611a878484846121fa565b6001600160a01b03841660009081526007602052604090205460ff16158015611b1f57506001600160a01b03831660009081526007602052604090205460ff16155b15611b2f57611a878484846122a3565b6001600160a01b03841660009081526007602052604090205460ff168015611b6f57506001600160a01b03831660009081526007602052604090205460ff165b15611b7f57611a878484846122e7565b611b8a8484846122a3565b80611ba057611ba0601054600f55601254601155565b50505050565b600a546009546000918291825b600854811015611cf857826003600060088481548110611bd557611bd56126d1565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611c405750816004600060088481548110611c1957611c196126d1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c5657600a54600954945094505050509091565b611c9c6003600060088481548110611c7057611c706126d1565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611949565b9250611ce46004600060088481548110611cb857611cb86126d1565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611949565b915080611cf081612726565b915050611bb3565b50600954600a54611d0891611859565b821015611d1f57600a546009549350935050509091565b90939092509050565b60008183611d495760405162461bcd60e51b815260040161080191906124e0565b50600061182d8486612859565b600080600080611d658561235a565b90506000611d728661237c565b90506000611d8a82611d848986611949565b90611949565b979296509094509092505050565b6000808080611da78886612398565b90506000611db58887612398565b90506000611dc38888612398565b90506000611dd582611d848686611949565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e1d57611e1d6126d1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebf919061287b565b81600181518110611ed257611ed26126d1565b60200260200101906001600160a01b031690816001600160a01b031681525050611f1d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611427565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f72908590600090869030904290600401612898565b600060405180830381600087803b158015611f8c57600080fd5b505af11580156117f4573d6000803e3d6000fd5b611fcb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611427565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806120126000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561207a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061209f9190612909565b5050505050565b600f541580156120b65750601154155b156120bd57565b600f80546010556011805460125560009182905555565b6000806000806000806120e6876118fa565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506121189088611949565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546121479087611949565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612176908661189b565b6001600160a01b0389166000908152600360205260409020556121988161241a565b6121a284836124a3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121e791815260200190565b60405180910390a3505050505050505050565b60008060008060008061220c876118fa565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061223e9087611949565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612274908461189b565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612176908661189b565b6000806000806000806122b5876118fa565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506121479087611949565b6000806000806000806122f9876118fa565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061232b9088611949565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461223e9087611949565b60006108b26064612376600f548561239890919063ffffffff16565b90611859565b60006108b260646123766011548561239890919063ffffffff16565b6000826000036123aa575060006108b2565b60006123b6838561282f565b9050826123c38583612859565b1461099e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610801565b6000612424611836565b905060006124328383612398565b3060009081526003602052604090205490915061244f908261189b565b3060009081526003602090815260408083209390935560079052205460ff161561249e573060009081526004602052604090205461248d908461189b565b306000908152600460205260409020555b505050565b600a546124b09083611949565b600a55600b546124c0908261189b565b600b555050565b6000602082840312156124d957600080fd5b5035919050565b600060208083528351808285015260005b8181101561250d578581018301518582016040015282016124f1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dba57600080fd5b6000806040838503121561255657600080fd5b82356125618161252e565b946020939093013593505050565b60008060006060848603121561258457600080fd5b833561258f8161252e565b9250602084013561259f8161252e565b929592945050506040919091013590565b6000602082840312156125c257600080fd5b813561099e8161252e565b803580151581146125dd57600080fd5b919050565b600080604083850312156125f557600080fd5b82359150612605602084016125cd565b90509250929050565b60006020828403121561262057600080fd5b61099e826125cd565b6000806040838503121561263c57600080fd5b82356126478161252e565b915060208301356126578161252e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806126ab57607f821691505b6020821081036126cb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26126e7565b634e487b7160e01b600052603160045260246000fd5b600060018201612738576127386126e7565b5060010190565b600181815b8085111561277a578160001904821115612760576127606126e7565b8085161561276d57918102915b93841c9390800290612744565b509250929050565b600082612791575060016108b2565b8161279e575060006108b2565b81600181146127b457600281146127be576127da565b60019150506108b2565b60ff8411156127cf576127cf6126e7565b50506001821b6108b2565b5060208310610133831016604e8410600b84101617156127fd575081810a6108b2565b612807838361273f565b806000190482111561281b5761281b6126e7565b029392505050565b600061099e8383612782565b80820281158282048414176108b2576108b26126e7565b808201808211156108b2576108b26126e7565b60008261287657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561288d57600080fd5b815161099e8161252e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128e85784516001600160a01b0316835293830193918301916001016128c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561291e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c8f252d657ad1fb4d2f2568d231a99829fe797ddaf350a98fed72f4ea39109e64736f6c63430008110033

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

000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000c35000000000000000000000000000000000000000000000000000000000000013880000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000b595071840711c5dffeca6f3400bc01edc48de9400000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a000000000000000000000000000000000000000000000000000000000000000b477269667420546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054752494654000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _NAME (string): Grift Token
Arg [1] : _SYMBOL (string): GRIFT
Arg [2] : _DECIMALS (uint256): 9
Arg [3] : _supply (uint256): 10000000
Arg [4] : _txFee (uint256): 0
Arg [5] : _lpFee (uint256): 3
Arg [6] : _MAXAMOUNT (uint256): 50000
Arg [7] : SELLMAXAMOUNT (uint256): 5000
Arg [8] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [9] : tokenOwner (address): 0xB595071840711C5DFFECA6F3400bc01eDc48De94
Arg [10] : service (address): 0x51e46fDDF884518d96EbeA18023f7B2d0A82582a

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 0000000000000000000000000000000000000000000000000000000000989680
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 000000000000000000000000000000000000000000000000000000000000c350
Arg [7] : 0000000000000000000000000000000000000000000000000000000000001388
Arg [8] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [9] : 000000000000000000000000b595071840711c5dffeca6f3400bc01edc48de94
Arg [10] : 00000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a
Arg [11] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [12] : 477269667420546f6b656e000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [14] : 4752494654000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

26720:20262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35235:102;;;;;;;;;;-1:-1:-1;35235:102:0;;;;;:::i;:::-;;:::i;:::-;;29920:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30894:167;;;;;;;;;;-1:-1:-1;30894:167:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;30894:167:0;1208:187:1;27913:61:0;;;;;;;;;;;;;;;;;;;1546:25:1;;;1534:2;1519:18;27913:61:0;1400:177:1;32065:91:0;;;;;;;;;;-1:-1:-1;32136:10:0;;32065:91;;27622:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1773:32:1;;;1755:51;;1743:2;1728:18;27622:51:0;1582:230:1;30223:99:0;;;;;;;;;;-1:-1:-1;30305:7:0;;30223:99;;31073:321;;;;;;;;;;-1:-1:-1;31073:321:0;;;;;:::i;:::-;;:::i;33037:261::-;;;;;;;;;;-1:-1:-1;33037:261:0;;;;;:::i;:::-;;:::i;30122:89::-;;;;;;;;;;-1:-1:-1;30192:9:0;;30122:89;;33785:501;;;;;;;;;;-1:-1:-1;33785:501:0;;;;;:::i;:::-;;:::i;31406:224::-;;;;;;;;;;-1:-1:-1;31406:224:0;;;;;:::i;:::-;;:::i;27456:22::-;;;;;;;;;;;;;;;;32168:391;;;;;;;;;;-1:-1:-1;32168:391:0;;;;;:::i;:::-;;:::i;34974:115::-;;;;;;;;;;-1:-1:-1;34974:115:0;;;;;:::i;:::-;;:::i;32571:454::-;;;;;;;;;;-1:-1:-1;32571:454:0;;;;;:::i;:::-;;:::i;38688:108::-;;;;;;;;;;;;;:::i;27682:38::-;;;;;;;;;;;;;;;27767:40;;;;;;;;;;-1:-1:-1;27767:40:0;;;;;;;;;;;33310:463;;;;;;;;;;-1:-1:-1;33310:463:0;;;;;:::i;:::-;;:::i;39617:127::-;;;;;;;;;;-1:-1:-1;39617:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;39707:27:0;39681:4;39707:27;;;:18;:27;;;;;;;;;39617:127;27535:28;;;;;;;;;;;;;;;;30334:204;;;;;;;;;;-1:-1:-1;30334:204:0;;;;;:::i;:::-;;:::i;16791:154::-;;;;;;;;;;;;;:::i;27824:27::-;;;;;;;;;;;;;;;;31929:124;;;;;;;;;;-1:-1:-1;31929:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;32023:20:0;31997:4;32023:20;;;:11;:20;;;;;;;;;31929:124;16110:83;;;;;;;;;;-1:-1:-1;16148:7:0;16177:6;-1:-1:-1;;;;;16177:6:0;16110:83;;35353:126;;;;;;;;;;-1:-1:-1;35353:126:0;;;;;:::i;:::-;;:::i;30019:91::-;;;;;;;;;;;;;:::i;31642:275::-;;;;;;;;;;-1:-1:-1;31642:275:0;;;;;:::i;:::-;;:::i;17869:315::-;;;;;;;;;;;;;:::i;30550:173::-;;;;;;;;;;-1:-1:-1;30550:173:0;;;;;:::i;:::-;;:::i;15824:21::-;;;;;;;;;;-1:-1:-1;15824:21:0;;;;-1:-1:-1;;;;;15824:21:0;;;17376:93;;;;;;;;;;-1:-1:-1;17450:9:0;;17376:93;;35817:177;;;;;;;;;;-1:-1:-1;35817:177:0;;;;;:::i;:::-;;:::i;27860:44::-;;;;;;;;;;;;;;;;35672:133;;;;;;;;;;-1:-1:-1;35672:133:0;;;;;:::i;:::-;;:::i;17551:236::-;;;;;;;;;;-1:-1:-1;17551:236:0;;;;;:::i;:::-;;:::i;30735:147::-;;;;;;;;;;-1:-1:-1;30735:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;30845:18:0;;;30816:7;30845:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;30735:147;35105:114;;;;;;;;;;-1:-1:-1;35105:114:0;;;;;:::i;:::-;;:::i;35495:162::-;;;;;;;;;;-1:-1:-1;35495:162:0;;;;;:::i;:::-;;:::i;17112:252::-;;;;;;;;;;-1:-1:-1;17112:252:0;;;;;:::i;:::-;;:::i;35235:102::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;;;;;;;;;35311:7:::1;:16:::0;35235:102::o;29920:87::-;29957:13;29992:5;29985:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29920:87;:::o;30894:167::-;30969:4;30988:39;8532:10;31011:7;31020:6;30988:8;:39::i;:::-;-1:-1:-1;31047:4:0;30894:167;;;;;:::o;31073:321::-;31171:4;31190:36;31200:6;31208:9;31219:6;31190:9;:36::i;:::-;31239:121;31248:6;8532:10;31270:89;31308:6;31270:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31270:19:0;;;;;;:11;:19;;;;;;;;8532:10;31270:33;;;;;;;;;;:37;:89::i;:::-;31239:8;:121::i;:::-;-1:-1:-1;31380:4:0;31073:321;;;;;:::o;33037:261::-;33103:7;33144;;33133;:18;;33125:73;;;;-1:-1:-1;;;33125:73:0;;4682:2:1;33125:73:0;;;4664:21:1;4721:2;4701:18;;;4694:30;4760:34;4740:18;;;4733:62;-1:-1:-1;;;4811:18:1;;;4804:40;4861:19;;33125:73:0;4480:406:1;33125:73:0;33211:19;33234:10;:8;:10::i;:::-;33211:33;-1:-1:-1;33264:24:0;:7;33211:33;33264:11;:24::i;:::-;33257:31;33037:261;-1:-1:-1;;;33037:261:0:o;33785:501::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33869:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;33861:60;;;::::0;-1:-1:-1;;;33861:60:0;;5093:2:1;33861:60:0::1;::::0;::::1;5075:21:1::0;5132:2;5112:18;;;5105:30;5171:29;5151:18;;;5144:57;5218:18;;33861:60:0::1;4891:351:1::0;33861:60:0::1;33939:9;33934:343;33958:9;:16:::0;33954:20;::::1;33934:343;;;34018:7;-1:-1:-1::0;;;;;34002:23:0::1;:9;34012:1;34002:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;34002:12:0::1;:23:::0;33998:266:::1;;34063:9;34073:16:::0;;:20:::1;::::0;34092:1:::1;::::0;34073:20:::1;:::i;:::-;34063:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;34048:9:::1;:12:::0;;-1:-1:-1;;;;;34063:31:0;;::::1;::::0;34058:1;;34048:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;34048:46:0::1;-1:-1:-1::0;;;;;34048:46:0;;::::1;;::::0;;34115:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;34156:11:::1;:20:::0;;;;:28;;-1:-1:-1;;34156:28:0::1;::::0;;34205:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;34205:15:0;;;;;-1:-1:-1;;;;;;34205:15:0::1;::::0;;;;;33934:343:::1;33785:501:::0;:::o;33998:266::-:1;33976:3:::0;::::1;::::0;::::1;:::i;:::-;;;;33934:343;;;;33785:501:::0;:::o;31406:224::-;8532:10;31494:4;31545:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;31545:34:0;;;;;;;;;;31494:4;;31513:83;;31536:7;;31545:50;;31584:10;31545:38;:50::i;32168:391::-;8532:10;32222:14;32273:19;;;:11;:19;;;;;;;;32272:20;32264:77;;;;-1:-1:-1;;;32264:77:0;;6118:2:1;32264:77:0;;;6100:21:1;6157:2;6137:18;;;6130:30;6196:34;6176:18;;;6169:62;-1:-1:-1;;;6247:18:1;;;6240:42;6299:19;;32264:77:0;5916:408:1;32264:77:0;32355:15;32379:19;32390:7;32379:10;:19::i;:::-;-1:-1:-1;;;;;;;;;32429:15:0;;;;;;:7;:15;;;;;;32354:44;;-1:-1:-1;32429:28:0;;:15;-1:-1:-1;32354:44:0;32429:19;:28::i;:::-;-1:-1:-1;;;;;32411:15:0;;;;;;:7;:15;;;;;:46;32480:7;;:20;;32492:7;32480:11;:20::i;:::-;32470:7;:30;32526:10;;:23;;32541:7;32526:14;:23::i;:::-;32513:10;:36;-1:-1:-1;;;32168:391:0:o;34974:115::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35045:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;35045:34:0::1;35075:4;35045:34;::::0;;34974:115::o;32571:454::-;32661:7;32702;;32691;:18;;32683:62;;;;-1:-1:-1;;;32683:62:0;;6531:2:1;32683:62:0;;;6513:21:1;6570:2;6550:18;;;6543:30;6609:33;6589:18;;;6582:61;6660:18;;32683:62:0;6329:355:1;32683:62:0;32763:17;32758:258;;32800:15;32824:19;32835:7;32824:10;:19::i;:::-;-1:-1:-1;32799:44:0;;-1:-1:-1;32860:14:0;;-1:-1:-1;;;;;32860:14:0;32758:258;32913:23;32944:19;32955:7;32944:10;:19::i;:::-;-1:-1:-1;32911:52:0;;-1:-1:-1;32980:22:0;;-1:-1:-1;;;;;32980:22:0;38688:108;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;38747:6:::1;::::0;;38739:47:::1;::::0;-1:-1:-1;;;;;38747:6:0;;::::1;::::0;38764:21:::1;38739:47:::0;::::1;;;::::0;38764:21;;38739:47;38747:6;38739:47;38764:21;38747:6;38739:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;38688:108::o:0;33310:463::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33511:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;33510:21;33502:61;;;::::0;-1:-1:-1;;;33502:61:0;;5093:2:1;33502:61:0::1;::::0;::::1;5075:21:1::0;5132:2;5112:18;;;5105:30;5171:29;5151:18;;;5144:57;5218:18;;33502:61:0::1;4891:351:1::0;33502:61:0::1;-1:-1:-1::0;;;;;33579:16:0;::::1;33598:1;33579:16:::0;;;:7:::1;:16;::::0;;;;;:20;33576:112:::1;;-1:-1:-1::0;;;;;33657:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;33637:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;33618:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;33576:112:::1;-1:-1:-1::0;;;;;33700:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;33700:27:0::1;33723:4;33700:27:::0;;::::1;::::0;;;33740:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;33740:23:0::1;::::0;;::::1;::::0;;33310:463::o;30334:204::-;-1:-1:-1;;;;;30426:20:0;;30400:7;30426:20;;;:11;:20;;;;;;;;30422:49;;;-1:-1:-1;;;;;;30455:16:0;;;;;:7;:16;;;;;;;30334:204::o;30422:49::-;-1:-1:-1;;;;;30511:16:0;;;;;;:7;:16;;;;;;30491:37;;:19;:37::i;16791:154::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;16900:1:::1;16884:6:::0;;16863:40:::1;::::0;-1:-1:-1;;;;;16884:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;16863:40:0;16900:1;;16863:40:::1;16933:1;16916:19:::0;;-1:-1:-1;;;;;;16916:19:0::1;::::0;;16791:154::o;35353:126::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;35441:13:::1;:28:::0;35353:126::o;30019:91::-;30058:13;30093:7;30086:14;;;;;:::i;31642:275::-;31735:4;31754:129;8532:10;31777:7;31786:96;31825:15;31786:96;;;;;;;;;;;;;;;;;8532:10;31786:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;31786:34:0;;;;;;;;;;;;:38;:96::i;17869:315::-;17923:14;;-1:-1:-1;;;;;17923:14:0;17941:10;17923:28;17915:76;;;;-1:-1:-1;;;17915:76:0;;6891:2:1;17915:76:0;;;6873:21:1;6930:2;6910:18;;;6903:30;6969:34;6949:18;;;6942:62;-1:-1:-1;;;7020:18:1;;;7013:33;7063:19;;17915:76:0;6689:399:1;17915:76:0;18030:9;;18012:15;:27;18004:72;;;;-1:-1:-1;;;18004:72:0;;7295:2:1;18004:72:0;;;7277:21:1;7334:2;7314:18;;;7307:30;7373:33;7353:18;;;7346:61;7424:18;;18004:72:0;7093:355:1;18004:72:0;18123:14;;;18115:6;;18094:44;;-1:-1:-1;;;;;18123:14:0;;;;18115:6;;;;-1:-1:-1;;;;;;;;;;;18094:44:0;;18160:14;;;18151:23;;-1:-1:-1;;;;;;18151:23:0;-1:-1:-1;;;;;18160:14:0;;;18151:23;;;;;;17869:315::o;30550:173::-;30628:4;30647:42;8532:10;30671:9;30682:6;30647:9;:42::i;35817:177::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;35896:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;35896:32:0;;::::1;;::::0;;35946:38:::1;::::0;::::1;::::0;::::1;::::0;35920:8;1373:14:1;1366:22;1348:41;;1336:2;1321:18;;1208:187;35946:38:0::1;;;;;;;;35817:177:::0;:::o;35672:133::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;35786:9:::1;::::0;35780:15:::1;::::0;:2:::1;:15;:::i;:::-;35764:31;::::0;:12;:31:::1;:::i;:::-;35749:12;:46:::0;-1:-1:-1;35672:133:0:o;17551:236::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;17634:6:::1;::::0;;;17617:23;;-1:-1:-1;;;;;;17617:23:0;;::::1;-1:-1:-1::0;;;;;17634:6:0;::::1;17617:23;::::0;;;17653:19:::1;::::0;;17697:22:::1;17715:4:::0;17697:15:::1;:22;:::i;:::-;17685:9;:34:::0;17774:1:::1;17758:6:::0;;17737:40:::1;::::0;-1:-1:-1;;;;;17758:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;17737:40:0;17774:1;;17737:40:::1;17551:236:::0;:::o;35105:114::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35174:27:0::1;35204:5;35174:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35174:35:0::1;::::0;;35105:114::o;35495:162::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;35638:9:::1;::::0;35632:15:::1;::::0;:2:::1;:15;:::i;:::-;35619:28;::::0;:10;:28:::1;:::i;:::-;35587:29;:60:::0;-1:-1:-1;35495:162:0:o;17112:252::-;16338:6;;-1:-1:-1;;;;;16338:6:0;8532:10;16338:22;16330:67;;;;-1:-1:-1;;;16330:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17203:22:0;::::1;17195:73;;;::::0;-1:-1:-1;;;17195:73:0;;9332:2:1;17195:73:0::1;::::0;::::1;9314:21:1::0;9371:2;9351:18;;;9344:30;9410:34;9390:18;;;9383:62;-1:-1:-1;;;9461:18:1;;;9454:36;9507:19;;17195:73:0::1;9130:402:1::0;17195:73:0::1;17307:6;::::0;;17286:38:::1;::::0;-1:-1:-1;;;;;17286:38:0;;::::1;::::0;17307:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;17286:38:0;::::1;17337:6;:17:::0;;-1:-1:-1;;;;;;17337:17:0::1;-1:-1:-1::0;;;;;17337:17:0;;;::::1;::::0;;;::::1;::::0;;17112:252::o;39756:349::-;-1:-1:-1;;;;;39851:19:0;;39843:68;;;;-1:-1:-1;;;39843:68:0;;9739:2:1;39843:68:0;;;9721:21:1;9778:2;9758:18;;;9751:30;9817:34;9797:18;;;9790:62;-1:-1:-1;;;9868:18:1;;;9861:34;9912:19;;39843:68:0;9537:400:1;39843:68:0;-1:-1:-1;;;;;39932:21:0;;39924:68;;;;-1:-1:-1;;;39924:68:0;;10144:2:1;39924:68:0;;;10126:21:1;10183:2;10163:18;;;10156:30;10222:34;10202:18;;;10195:62;-1:-1:-1;;;10273:18:1;;;10266:32;10315:19;;39924:68:0;9942:398:1;39924:68:0;-1:-1:-1;;;;;40009:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40063:32;;1546:25:1;;;40063:32:0;;1519:18:1;40063:32:0;;;;;;;39756:349;;;:::o;40117:1924::-;-1:-1:-1;;;;;40249:18:0;;40241:68;;;;-1:-1:-1;;;40241:68:0;;10547:2:1;40241:68:0;;;10529:21:1;10586:2;10566:18;;;10559:30;10625:34;10605:18;;;10598:62;-1:-1:-1;;;10676:18:1;;;10669:35;10721:19;;40241:68:0;10345:401:1;40241:68:0;-1:-1:-1;;;;;40330:16:0;;40322:64;;;;-1:-1:-1;;;40322:64:0;;10953:2:1;40322:64:0;;;10935:21:1;10992:2;10972:18;;;10965:30;11031:34;11011:18;;;11004:62;-1:-1:-1;;;11082:18:1;;;11075:33;11125:19;;40322:64:0;10751:399:1;40322:64:0;40416:1;40407:6;:10;40399:64;;;;-1:-1:-1;;;40399:64:0;;11357:2:1;40399:64:0;;;11339:21:1;11396:2;11376:18;;;11369:30;11435:34;11415:18;;;11408:62;-1:-1:-1;;;11486:18:1;;;11479:39;11535:19;;40399:64:0;11155:405:1;40399:64:0;16148:7;16177:6;-1:-1:-1;;;;;40502:15:0;;;16177:6;;40502:15;;;;:32;;-1:-1:-1;16148:7:0;16177:6;-1:-1:-1;;;;;40521:13:0;;;16177:6;;40521:13;;40502:32;40499:127;;;40569:12;;40559:6;:22;;40551:75;;;;-1:-1:-1;;;40551:75:0;;11767:2:1;40551:75:0;;;11749:21:1;11806:2;11786:18;;;11779:30;11845:34;11825:18;;;11818:62;-1:-1:-1;;;11896:18:1;;;11889:38;11944:19;;40551:75:0;11565:404:1;40551:75:0;40933:28;40964:24;40982:4;40964:9;:24::i;:::-;40933:55;;41040:12;;41016:20;:36;41013:118;;-1:-1:-1;41105:12:0;;41013:118;41206:29;;41182:53;;;;;;;41268:55;;-1:-1:-1;41307:16:0;;;;41306:17;41268:55;:95;;;;;41350:13;-1:-1:-1;;;;;41342:21:0;:4;-1:-1:-1;;;;;41342:21:0;;;41268:95;:135;;;;-1:-1:-1;41382:21:0;;;;;;;41268:135;41248:336;;;41457:29;;41434:52;;41534:36;41549:20;41534:14;:36::i;:::-;-1:-1:-1;;;;;41804:24:0;;41671:12;41804:24;;;:18;:24;;;;;;41686:4;;41804:24;;;:50;;-1:-1:-1;;;;;;41832:22:0;;;;;;:18;:22;;;;;;;;41804:50;41801:100;;;-1:-1:-1;41882:5:0;41801:100;41993:38;42008:4;42013:2;42016:6;42023:7;41993:14;:38::i;:::-;40228:1813;;;40117:1924;;;:::o;4640:202::-;4726:7;4764:12;4756:6;;;;4748:29;;;;-1:-1:-1;;;4748:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4790:9:0;4802:5;4806:1;4802;:5;:::i;:::-;4790:17;4640:202;-1:-1:-1;;;;;4640:202:0:o;37519:169::-;37560:7;37583:15;37600;37619:19;:17;:19::i;:::-;37582:56;;-1:-1:-1;37582:56:0;-1:-1:-1;37658:20:0;37582:56;;37658:11;:20::i;:::-;37651:27;;;;37519:169;:::o;6124:136::-;6182:7;6211:39;6215:1;6218;6211:39;;;;;;;;;;;;;;;;;:3;:39::i;3675:191::-;3733:7;;3767:5;3771:1;3767;:5;:::i;:::-;3755:17;;3798:1;3793;:6;;3785:46;;;;-1:-1:-1;;;3785:46:0;;12176:2:1;3785:46:0;;;12158:21:1;12215:2;12195:18;;;12188:30;12254:29;12234:18;;;12227:57;12301:18;;3785:46:0;11974:351:1;36275:427:0;36334:7;36343;36352;36361;36370;36379;36402:23;36427:12;36441:18;36463:20;36475:7;36463:11;:20::i;:::-;36401:82;;;;;;36497:15;36514:23;36539:12;36555:50;36567:7;36576:4;36582:10;36594;:8;:10::i;:::-;36555:11;:50::i;:::-;36496:109;;;;-1:-1:-1;36496:109:0;;-1:-1:-1;36658:15:0;;-1:-1:-1;36675:4:0;;-1:-1:-1;36681:10:0;;-1:-1:-1;36275:427:0;;-1:-1:-1;;;;;36275:427:0:o;4173:140::-;4231:7;4260:43;4264:1;4267;4260:43;;;;;;;;;;;;;;;;;:3;:43::i;42053:1027::-;28317:16;:23;;-1:-1:-1;;28317:23:0;28336:4;28317:23;;;:16;42208:27:::1;:20:::0;42233:1:::1;42208:24;:27::i;:::-;42193:42:::0;-1:-1:-1;42248:17:0::1;42268:30;:20:::0;42193:42;42268:24:::1;:30::i;:::-;42248:50:::0;-1:-1:-1;42613:21:0::1;42685:22;42702:4:::0;42685:16:::1;:22::i;:::-;42844:18;42865:41;:21;42891:14:::0;42865:25:::1;:41::i;:::-;42844:62;;42962:35;42975:9;42986:10;42962:12;:35::i;:::-;43027:43;::::0;;12532:25:1;;;12588:2;12573:18;;12566:34;;;12616:18;;;12609:34;;;43027:43:0::1;::::0;12520:2:1;12505:18;43027:43:0::1;;;;;;;-1:-1:-1::0;;28367:16:0;:24;;-1:-1:-1;;28367:24:0;;;-1:-1:-1;;;42053:1027:0:o;44351:870::-;44464:7;44460:42;;44488:14;:12;:14::i;:::-;-1:-1:-1;;;;;44531:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;44555:22:0;;;;;;:11;:22;;;;;;;;44554:23;44531:46;44527:617;;;44596:48;44618:6;44626:9;44637:6;44596:21;:48::i;:::-;44527:617;;;-1:-1:-1;;;;;44669:19:0;;;;;;:11;:19;;;;;;;;44668:20;:46;;;;-1:-1:-1;;;;;;44692:22:0;;;;;;:11;:22;;;;;;;;44668:46;44664:480;;;44733:46;44753:6;44761:9;44772:6;44733:19;:46::i;44664:480::-;-1:-1:-1;;;;;44804:19:0;;;;;;:11;:19;;;;;;;;44803:20;:47;;;;-1:-1:-1;;;;;;44828:22:0;;;;;;:11;:22;;;;;;;;44827:23;44803:47;44799:345;;;44869:44;44887:6;44895:9;44906:6;44869:17;:44::i;44799:345::-;-1:-1:-1;;;;;44937:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;44960:22:0;;;;;;:11;:22;;;;;;;;44937:45;44933:211;;;45001:48;45023:6;45031:9;45042:6;45001:21;:48::i;44933:211::-;45086:44;45104:6;45112:9;45123:6;45086:17;:44::i;:::-;45172:7;45168:43;;45196:15;39526;;39516:7;:25;39570:21;;39554:13;:37;39470:131;45196:15;44351:870;;;;:::o;37700:581::-;37799:7;;37837;;37750;;;;;37863:297;37887:9;:16;37883:20;;37863:297;;;37955:7;37931;:21;37939:9;37949:1;37939:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;37939:12:0;37931:21;;;;;;;;;;;;;:31;;:66;;;37990:7;37966;:21;37974:9;37984:1;37974:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;37974:12:0;37966:21;;;;;;;;;;;;;:31;37931:66;37927:97;;;38007:7;;38016;;37999:25;;;;;;;37700:581;;:::o;37927:97::-;38051:34;38063:7;:21;38071:9;38081:1;38071:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38071:12:0;38063:21;;;;;;;;;;;;;38051:7;;:11;:34::i;:::-;38041:44;;38112:34;38124:7;:21;38132:9;38142:1;38132:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38132:12:0;38124:21;;;;;;;;;;;;;38112:7;;:11;:34::i;:::-;38102:44;-1:-1:-1;37905:3:0;;;;:::i;:::-;;;;37863:297;;;-1:-1:-1;38198:7:0;;38186;;:20;;:11;:20::i;:::-;38176:7;:30;38172:61;;;38216:7;;38225;;38208:25;;;;;;37700:581;;:::o;38172:61::-;38254:7;;38263;;-1:-1:-1;37700:581:0;-1:-1:-1;37700:581:0:o;6784:290::-;6870:7;6907:12;6900:5;6892:28;;;;-1:-1:-1;;;6892:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6933:9:0;6945:5;6949:1;6945;:5;:::i;36714:340::-;36774:7;36783;36792;36814:12;36829:24;36845:7;36829:15;:24::i;:::-;36814:39;;36866:18;36887:30;36909:7;36887:21;:30::i;:::-;36866:51;-1:-1:-1;36930:23:0;36956:33;36866:51;36956:17;:7;36968:4;36956:11;:17::i;:::-;:21;;:33::i;:::-;36930:59;37027:4;;-1:-1:-1;37033:10:0;;-1:-1:-1;36714:340:0;;-1:-1:-1;;;36714:340:0:o;37066:441::-;37181:7;;;;37239:24;:7;37251:11;37239;:24::i;:::-;37221:42;-1:-1:-1;37276:12:0;37291:21;:4;37300:11;37291:8;:21::i;:::-;37276:36;-1:-1:-1;37325:18:0;37346:27;:10;37361:11;37346:14;:27::i;:::-;37325:48;-1:-1:-1;37386:23:0;37412:33;37325:48;37412:17;:7;37424:4;37412:11;:17::i;:33::-;37466:7;;;;-1:-1:-1;37492:4:0;;-1:-1:-1;37066:441:0;;-1:-1:-1;;;;;;;37066:441:0:o;43092:621::-;43246:16;;;43260:1;43246:16;;;;;;;;43222:21;;43246:16;;;;;;;;;;-1:-1:-1;43246:16:0;43222:40;;43293:4;43275;43280:1;43275:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;43275:23:0;;;-1:-1:-1;;;;;43275:23:0;;;;;43321:15;-1:-1:-1;;;;;43321:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43311:4;43316:1;43311:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;43311:32:0;;;-1:-1:-1;;;;;43311:32:0;;;;;43360:62;43377:4;43392:15;43410:11;43360:8;:62::i;:::-;43467:236;;-1:-1:-1;;;43467:236:0;;-1:-1:-1;;;;;43467:15:0;:66;;;;:236;;43550:11;;43578:1;;43624:4;;43653;;43675:15;;43467:236;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43725:539;43877:62;43894:4;43909:15;43927:11;43877:8;:62::i;:::-;43988:15;-1:-1:-1;;;;;43988:31:0;;44027:9;44062:4;44084:11;44112:1;44157;44202:7;16148;16177:6;-1:-1:-1;;;;;16177:6:0;;16110:83;44202:7;43988:266;;;;;;-1:-1:-1;;;;;;43988:266:0;;;-1:-1:-1;;;;;14608:15:1;;;43988:266:0;;;14590:34:1;14640:18;;;14633:34;;;;14683:18;;;14676:34;;;;14726:18;;;14719:34;14790:15;;;14769:19;;;14762:44;44226:15:0;14822:19:1;;;14815:35;14524:19;;43988:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43725:539;;:::o;39188:266::-;39236:7;;:12;:34;;;;-1:-1:-1;39252:13:0;;:18;39236:34;39233:46;;;39188:266::o;39233:46::-;39321:7;;;39303:15;:25;39365:13;;;39341:21;:37;-1:-1:-1;39403:11:0;;;;39427:17;39188:266::o;46375:582::-;46480:15;46497:23;46522:12;46536:23;46561:12;46575:18;46597:19;46608:7;46597:10;:19::i;:::-;-1:-1:-1;;;;;46647:15:0;;;;;;:7;:15;;;;;;46479:137;;-1:-1:-1;46479:137:0;;-1:-1:-1;46479:137:0;;-1:-1:-1;46479:137:0;-1:-1:-1;46479:137:0;-1:-1:-1;46479:137:0;-1:-1:-1;46647:28:0;;46667:7;46647:19;:28::i;:::-;-1:-1:-1;;;;;46629:15:0;;;;;;:7;:15;;;;;;;;:46;;;;46706:7;:15;;;;:28;;46726:7;46706:19;:28::i;:::-;-1:-1:-1;;;;;46688:15:0;;;;;;;:7;:15;;;;;;:46;;;;46768:18;;;;;;;:39;;46791:15;46768:22;:39::i;:::-;-1:-1:-1;;;;;46747:18:0;;;;;;:7;:18;;;;;:60;46823:26;46838:10;46823:14;:26::i;:::-;46862:23;46874:4;46880;46862:11;:23::i;:::-;46920:9;-1:-1:-1;;;;;46903:44:0;46912:6;-1:-1:-1;;;;;46903:44:0;;46931:15;46903:44;;;;1546:25:1;;1534:2;1519:18;;1400:177;46903:44:0;;;;;;;;46466:491;;;;;;46375:582;;;:::o;45761:602::-;45864:15;45881:23;45906:12;45920:23;45945:12;45959:18;45981:19;45992:7;45981:10;:19::i;:::-;-1:-1:-1;;;;;46031:15:0;;;;;;:7;:15;;;;;;45863:137;;-1:-1:-1;45863:137:0;;-1:-1:-1;45863:137:0;;-1:-1:-1;45863:137:0;-1:-1:-1;45863:137:0;-1:-1:-1;45863:137:0;-1:-1:-1;46031:28:0;;45863:137;46031:19;:28::i;:::-;-1:-1:-1;;;;;46013:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;46093:18;;;;;:7;:18;;;;;:39;;46116:15;46093:22;:39::i;:::-;-1:-1:-1;;;;;46072:18:0;;;;;;:7;:18;;;;;;;;:60;;;;46166:7;:18;;;;:39;;46189:15;46166:22;:39::i;45233:516::-;45334:15;45351:23;45376:12;45390:23;45415:12;45429:18;45451:19;45462:7;45451:10;:19::i;:::-;-1:-1:-1;;;;;45501:15:0;;;;;;:7;:15;;;;;;45333:137;;-1:-1:-1;45333:137:0;;-1:-1:-1;45333:137:0;;-1:-1:-1;45333:137:0;-1:-1:-1;45333:137:0;-1:-1:-1;45333:137:0;-1:-1:-1;45501:28:0;;45333:137;45501:19;:28::i;34298:660::-;34403:15;34420:23;34445:12;34459:23;34484:12;34498:18;34520:19;34531:7;34520:10;:19::i;:::-;-1:-1:-1;;;;;34570:15:0;;;;;;:7;:15;;;;;;34402:137;;-1:-1:-1;34402:137:0;;-1:-1:-1;34402:137:0;;-1:-1:-1;34402:137:0;-1:-1:-1;34402:137:0;-1:-1:-1;34402:137:0;-1:-1:-1;34570:28:0;;34590:7;34570:19;:28::i;:::-;-1:-1:-1;;;;;34552:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34629:7;:15;;;;:28;;34649:7;34629:19;:28::i;38824:162::-;38888:7;38917:59;38958:5;38917:20;38929:7;;38917;:11;;:20;;;;:::i;:::-;:24;;:59::i;38998:174::-;39068:7;39097:65;39144:5;39097:26;39109:13;;39097:7;:11;;:26;;;;:::i;5125:495::-;5183:7;5436:1;5441;5436:6;5432:51;;-1:-1:-1;5468:1:0;5461:8;;5432:51;5499:9;5511:5;5515:1;5511;:5;:::i;:::-;5499:17;-1:-1:-1;5546:1:0;5537:5;5541:1;5499:17;5537:5;:::i;:::-;:10;5529:56;;;;-1:-1:-1;;;5529:56:0;;15374:2:1;5529:56:0;;;15356:21:1;15413:2;15393:18;;;15386:30;15452:34;15432:18;;;15425:62;-1:-1:-1;;;15503:18:1;;;15496:31;15544:19;;5529:56:0;15172:397:1;38297:367:0;38362:19;38385:10;:8;:10::i;:::-;38362:33;-1:-1:-1;38408:18:0;38429:27;:10;38362:33;38429:14;:27::i;:::-;38510:4;38494:22;;;;:7;:22;;;;;;38408:48;;-1:-1:-1;38494:38:0;;38408:48;38494:26;:38::i;:::-;38485:4;38469:22;;;;:7;:22;;;;;;;;:63;;;;38548:11;:26;;;;;;38545:109;;;38632:4;38616:22;;;;:7;:22;;;;;;:38;;38643:10;38616:26;:38::i;:::-;38607:4;38591:22;;;;:7;:22;;;;;:63;38545:109;38349:315;;38297:367;:::o;36110:153::-;36190:7;;:17;;36202:4;36190:11;:17::i;:::-;36180:7;:27;36233:10;;:20;;36248:4;36233:14;:20::i;:::-;36220:10;:33;-1:-1:-1;;36110:153:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2278:247::-;2337:6;2390:2;2378:9;2369:7;2365:23;2361:32;2358:52;;;2406:1;2403;2396:12;2358:52;2445:9;2432:23;2464:31;2489:5;2464:31;:::i;2530:160::-;2595:20;;2651:13;;2644:21;2634:32;;2624:60;;2680:1;2677;2670:12;2624:60;2530:160;;;:::o;2695:248::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2873:9;2860:23;2850:33;;2902:35;2933:2;2922:9;2918:18;2902:35;:::i;:::-;2892:45;;2695:248;;;;;:::o;3156:180::-;3212:6;3265:2;3253:9;3244:7;3240:23;3236:32;3233:52;;;3281:1;3278;3271:12;3233:52;3304:26;3320:9;3304:26;:::i;3341:388::-;3409:6;3417;3470:2;3458:9;3449:7;3445:23;3441:32;3438:52;;;3486:1;3483;3476:12;3438:52;3525:9;3512:23;3544:31;3569:5;3544:31;:::i;:::-;3594:5;-1:-1:-1;3651:2:1;3636:18;;3623:32;3664:33;3623:32;3664:33;:::i;:::-;3716:7;3706:17;;;3341:388;;;;;:::o;3734:356::-;3936:2;3918:21;;;3955:18;;;3948:30;4014:34;4009:2;3994:18;;3987:62;4081:2;4066:18;;3734:356::o;4095:380::-;4174:1;4170:12;;;;4217;;;4238:61;;4292:4;4284:6;4280:17;4270:27;;4238:61;4345:2;4337:6;4334:14;4314:18;4311:38;4308:161;;4391:10;4386:3;4382:20;4379:1;4372:31;4426:4;4423:1;4416:15;4454:4;4451:1;4444:15;4308:161;;4095:380;;;:::o;5247:127::-;5308:10;5303:3;5299:20;5296:1;5289:31;5339:4;5336:1;5329:15;5363:4;5360:1;5353:15;5379:127;5440:10;5435:3;5431:20;5428:1;5421:31;5471:4;5468:1;5461:15;5495:4;5492:1;5485:15;5511:128;5578:9;;;5599:11;;;5596:37;;;5613:18;;:::i;5644:127::-;5705:10;5700:3;5696:20;5693:1;5686:31;5736:4;5733:1;5726:15;5760:4;5757:1;5750:15;5776:135;5815:3;5836:17;;;5833:43;;5856:18;;:::i;:::-;-1:-1:-1;5903:1:1;5892:13;;5776:135::o;7453:422::-;7542:1;7585:5;7542:1;7599:270;7620:7;7610:8;7607:21;7599:270;;;7679:4;7675:1;7671:6;7667:17;7661:4;7658:27;7655:53;;;7688:18;;:::i;:::-;7738:7;7728:8;7724:22;7721:55;;;7758:16;;;;7721:55;7837:22;;;;7797:15;;;;7599:270;;;7603:3;7453:422;;;;;:::o;7880:806::-;7929:5;7959:8;7949:80;;-1:-1:-1;8000:1:1;8014:5;;7949:80;8048:4;8038:76;;-1:-1:-1;8085:1:1;8099:5;;8038:76;8130:4;8148:1;8143:59;;;;8216:1;8211:130;;;;8123:218;;8143:59;8173:1;8164:10;;8187:5;;;8211:130;8248:3;8238:8;8235:17;8232:43;;;8255:18;;:::i;:::-;-1:-1:-1;;8311:1:1;8297:16;;8326:5;;8123:218;;8425:2;8415:8;8412:16;8406:3;8400:4;8397:13;8393:36;8387:2;8377:8;8374:16;8369:2;8363:4;8360:12;8356:35;8353:77;8350:159;;;-1:-1:-1;8462:19:1;;;8494:5;;8350:159;8541:34;8566:8;8560:4;8541:34;:::i;:::-;8611:6;8607:1;8603:6;8599:19;8590:7;8587:32;8584:58;;;8622:18;;:::i;:::-;8660:20;;7880:806;-1:-1:-1;;;7880:806:1:o;8691:131::-;8751:5;8780:36;8807:8;8801:4;8780:36;:::i;8827:168::-;8900:9;;;8931;;8948:15;;;8942:22;;8928:37;8918:71;;8969:18;;:::i;9000:125::-;9065:9;;;9086:10;;;9083:36;;;9099:18;;:::i;12654:217::-;12694:1;12720;12710:132;;12764:10;12759:3;12755:20;12752:1;12745:31;12799:4;12796:1;12789:15;12827:4;12824:1;12817:15;12710:132;-1:-1:-1;12856:9:1;;12654:217::o;13008:251::-;13078:6;13131:2;13119:9;13110:7;13106:23;13102:32;13099:52;;;13147:1;13144;13137:12;13099:52;13179:9;13173:16;13198:31;13223:5;13198:31;:::i;13264:980::-;13526:4;13574:3;13563:9;13559:19;13605:6;13594:9;13587:25;13631:2;13669:6;13664:2;13653:9;13649:18;13642:34;13712:3;13707:2;13696:9;13692:18;13685:31;13736:6;13771;13765:13;13802:6;13794;13787:22;13840:3;13829:9;13825:19;13818:26;;13879:2;13871:6;13867:15;13853:29;;13900:1;13910:195;13924:6;13921:1;13918:13;13910:195;;;13989:13;;-1:-1:-1;;;;;13985:39:1;13973:52;;14080:15;;;;14045:12;;;;14021:1;13939:9;13910:195;;;-1:-1:-1;;;;;;;14161:32:1;;;;14156:2;14141:18;;14134:60;-1:-1:-1;;;14225:3:1;14210:19;14203:35;14122:3;13264:980;-1:-1:-1;;;13264:980:1:o;14861:306::-;14949:6;14957;14965;15018:2;15006:9;14997:7;14993:23;14989:32;14986:52;;;15034:1;15031;15024:12;14986:52;15063:9;15057:16;15047:26;;15113:2;15102:9;15098:18;15092:25;15082:35;;15157:2;15146:9;15142:18;15136:25;15126:35;;14861:306;;;;;:::o

Swarm Source

ipfs://5c8f252d657ad1fb4d2f2568d231a99829fe797ddaf350a98fed72f4ea39109e
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.