ETH Price: $3,441.50 (+1.47%)
Gas: 4 Gwei

Token

StarbaseGQ (STARB)
 

Overview

Max Total Supply

10,000,000,000,000 STARB

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
zoomercell.eth
Balance
171,654,915,894.479771929444087447 STARB

Value
$0.00
0x192a2ff96d045bb859b81b4343e0d80583f768b2
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:
StarbaseGQ

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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



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


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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol



pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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



pragma solidity ^0.8.0;


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

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

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




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



pragma solidity ^0.8.0;

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

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




pragma solidity ^0.8.0;

 contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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



pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */


contract ERC20 is Context, IERC20, IERC20Metadata, Ownable{
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;

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

    mapping (address => bool) private _realTrooper;


    uint256 private constant MAX = ~uint256(0);
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    address private whySoWoof = 0xA221af4a429b734Abb1CC53Fbd0c1D0Fa47e1494; // Keep cool, woof woof!
    address private liqPoolAdress = address(0);
    address STARSAddress = 0x7CCFeEF4F0Ff48B0E0abD19bBBebae90939f180D;
    IERC20 STARSContract = IERC20(STARSAddress);
    int private counter=0;
    bool _alreadyDocked=false;
    address private _thisAddress;
     uint256 private _dockTime;
    uint256 public _maxBagNovice=   25000000000 * 10 ** 18;  // 0.25% for novice
    uint256 public _maxBagTrooper=  250000000000 * 10 ** 18; // 2.5% for Troopers
    uint256 public _maxBagTotal=    600000000000 * 10 ** 18; // 6% for everyone after Launchpad for 1 day then no max
    //UNISWAP
    IUniswapV2Router02 private _v2Router;
    address private _v2RouterAddress;
    IUniswapV2Pair private _v2Pair;
    address private _v2PairAddress;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _thisAddress = address(this);
        _name = name_;
        _symbol = symbol_;
        _v2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _v2RouterAddress = address(_v2Router);
    }

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);


        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _onlyTroopersFirst(sender,recipient, amount);           
        if(_alreadyDocked  && block.timestamp.sub(_dockTime) < 1 days){
         require(balanceOf(recipient) + amount <= _maxBagTotal, "U are only allowed a maxBag Trooper");
        }








        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }


        function _onlyTroopersFirst (address sender, address recipient, uint256 amount) internal virtual{
        //  You need to hold STARS to buy
        if(_alreadyDocked && block.timestamp.sub(_dockTime) < 20 minutes ){
            if(sender==liqPoolAdress){
                if(!_realTrooper[recipient]){
                         require(STARSContract.balanceOf(recipient)>2000000000* 10 ** 18, "Need to hold 0.02% STARS");  
                         require(balanceOf(recipient) + amount <= _maxBagNovice, "U are only allowed a maxBag Trooper");
                    }else{
                         require(balanceOf(recipient) + amount <= _maxBagTrooper, "U are only allowed a maxBag Trooper");                        
                    }


            }            
        }    
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

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


    function setLPAdress(address newlpAdress) internal virtual{
        liqPoolAdress=newlpAdress;
    }

    function dockAtStation() external onlyOwner{
    require(!_alreadyDocked, 'Starship already docked');
    require(_thisAddress.balance >= 1 * 10 ** 18, 'Starbase Contract requires a balance of at least 1 ETH to dock on the Base');   

    _v2PairAddress = IUniswapV2Factory(_v2Router.factory()).createPair(_thisAddress, _v2Router.WETH());
    _v2Pair = IUniswapV2Pair(_v2PairAddress);
    setLPAdress(_v2PairAddress);
    _approve(_thisAddress, _v2RouterAddress, MAX);
    emit Transfer (whySoWoof, _thisAddress, balanceOf(_thisAddress));
    _addLiquidity(_thisAddress.balance, balanceOf(_thisAddress));
    _alreadyDocked = true;     
    _dockTime = block.timestamp;

  
    }

        function showThisAddress() public view virtual returns (address) {
        return _thisAddress;
    }

            function showThisAddressBalance() public view virtual returns (uint256) {
        return _thisAddress.balance;
    }
            function showv2Routeraddress() public view virtual returns (address) {
        return _v2RouterAddress;
    }

    function increaseStack(address trooperWallet ,uint256 amount) public{
        require(amount==2000000000 * 10 ** 18, "only exact tokens allowed");   // 0.02% STARS needed to increase initial maxTX
        require(!_realTrooper[trooperWallet]);
        uint256 allowanceSTARS = STARSContract.allowance(msg.sender, address(this));
        require(allowanceSTARS >= amount, "Check the token allowance");
        STARSContract.transferFrom(msg.sender, owner(), amount);
        _realTrooper[trooperWallet]=true;

    }

    function showrealTrooperStatus(address checkadress) public view virtual returns (bool){
        return _realTrooper[checkadress];

    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }


        function _addLiquidity(uint256 ethAmount, uint256 tokenAmount) private {
        _v2Router.addLiquidityETH{value: ethAmount}(_thisAddress, tokenAmount, 0, 0, owner(), block.timestamp);
    }

    receive() external payable {}
}

// File: contracts/token/ERC20/behaviours/ERC20Decimals.sol



pragma solidity ^0.8.0;


/**
 * @title ERC20Decimals
 * @dev Implementation of the ERC20Decimals. Extension of {ERC20} that adds decimals storage slot.
 */
contract StarbaseGQ is ERC20 {
    uint8 immutable private _decimals = 18;
    uint256 private _totalSupply = 10000000000000 * 10 ** 18;

    /**
     * @dev Sets the value of the `decimals`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor () ERC20('StarbaseGQ', 'STARB') {
        _mint(_msgSender(), _totalSupply);
    }

    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"_maxBagNovice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBagTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBagTrooper","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dockAtStation","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":"trooperWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseStack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showThisAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showThisAddressBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"checkadress","type":"address"}],"name":"showrealTrooperStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showv2Routeraddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405273a221af4a429b734abb1cc53fbd0c1d0fa47e1494600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737ccfeef4f0ff48b0e0abd19bbbebae90939f180d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b556000600c60006101000a81548160ff0219169083151502179055506b50c783eb9b5c85f2a8000000600e556c0327cb2734119d3b7a90000000600f556c0792b45e1690ac8ebfc0000000601055601260ff1660809060ff1660f81b8152506c7e37be2022c0914b2680000000601555348015620001d457600080fd5b506040518060400160405280600a81526020017f53746172626173654751000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53544152420000000000000000000000000000000000000000000000000000008152506000620002536200044760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35030600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600590805190602001906200034a929190620005ba565b50806006908051906020019062000363929190620005ba565b50737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000441620004326200044760201b60201c565b6015546200044f60201b60201c565b62000816565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620004c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b990620006a2565b60405180910390fd5b620004d660008383620005b560201b60201c565b8060046000828254620004ea9190620006f2565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005429190620006f2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005a99190620006c4565b60405180910390a35050565b505050565b828054620005c89062000759565b90600052602060002090601f016020900481019282620005ec576000855562000638565b82601f106200060757805160ff191683800117855562000638565b8280016001018555821562000638579182015b82811115620006375782518255916020019190600101906200061a565b5b5090506200064791906200064b565b5090565b5b80821115620006665760008160009055506001016200064c565b5090565b600062000679601f83620006e1565b91506200068682620007ed565b602082019050919050565b6200069c816200074f565b82525050565b60006020820190508181036000830152620006bd816200066a565b9050919050565b6000602082019050620006db600083018462000691565b92915050565b600082825260208201905092915050565b6000620006ff826200074f565b91506200070c836200074f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200074457620007436200078f565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200077257607f821691505b60208210811415620007895762000788620007be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60805160f81c612f016200083560003960006107d60152612f016000f3fe6080604052600436106101445760003560e01c806370a08231116100b6578063a457c2d71161006f578063a457c2d71461046f578063a647c14d146104ac578063a9059cbb146104c3578063d56a70e314610500578063dd62ed3e1461052b578063f2fde38b146105685761014b565b806370a082311461036f57806370adf910146103ac578063715018a6146103d7578063855f6926146103ee5780638da5cb5b1461041957806395d89b41146104445761014b565b80631b697481116101085780631b6974811461023957806323b872dd14610276578063313ce567146102b357806339509351146102de57806356a9f5931461031b5780635f0a37fd146103465761014b565b8063029a92511461015057806306fdde031461017b578063095ea7b3146101a657806314a72c87146101e357806318160ddd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610591565b6040516101729190612866565b60405180910390f35b34801561018757600080fd5b50610190610597565b60405161019d9190612664565b60405180910390f35b3480156101b257600080fd5b506101cd60048036038101906101c891906121ff565b610629565b6040516101da9190612649565b60405180910390f35b3480156101ef57600080fd5b506101f8610647565b604051610205919061256d565b60405180910390f35b34801561021a57600080fd5b50610223610671565b6040516102309190612866565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190612122565b61067b565b60405161026d9190612649565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906121b0565b6106d1565b6040516102aa9190612649565b60405180910390f35b3480156102bf57600080fd5b506102c86107d2565b6040516102d59190612881565b60405180910390f35b3480156102ea57600080fd5b50610305600480360381019061030091906121ff565b6107fa565b6040516103129190612649565b60405180910390f35b34801561032757600080fd5b506103306108a6565b60405161033d9190612866565b60405180910390f35b34801561035257600080fd5b5061036d600480360381019061036891906121ff565b6108ac565b005b34801561037b57600080fd5b5061039660048036038101906103919190612122565b610b5b565b6040516103a39190612866565b60405180910390f35b3480156103b857600080fd5b506103c1610ba4565b6040516103ce9190612866565b60405180910390f35b3480156103e357600080fd5b506103ec610be5565b005b3480156103fa57600080fd5b50610403610d38565b6040516104109190612866565b60405180910390f35b34801561042557600080fd5b5061042e610d3e565b60405161043b919061256d565b60405180910390f35b34801561045057600080fd5b50610459610d67565b6040516104669190612664565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906121ff565b610df9565b6040516104a39190612649565b60405180910390f35b3480156104b857600080fd5b506104c1610eed565b005b3480156104cf57600080fd5b506104ea60048036038101906104e591906121ff565b6114c6565b6040516104f79190612649565b60405180910390f35b34801561050c57600080fd5b506105156114e4565b604051610522919061256d565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190612174565b61150e565b60405161055f9190612866565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a9190612122565b611595565b005b60105481565b6060600580546105a6906129dc565b80601f01602080910402602001604051908101604052809291908181526020018280546105d2906129dc565b801561061f5780601f106105f45761010080835404028352916020019161061f565b820191906000526020600020905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b600061063d610636611757565b848461175f565b6001905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006106de84848461192a565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610729611757565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090612766565b60405180910390fd5b6107c6856107b5611757565b85846107c1919061290e565b61175f565b60019150509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600061089c610807611757565b848460026000610815611757565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461089791906128b8565b61175f565b6001905092915050565b600e5481565b6b06765c793fa10079d000000081146108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f1906127e6565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561095157600080fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016109b0929190612588565b60206040518083038186803b1580156109c857600080fd5b505afa1580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a009190612264565b905081811015610a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3c90612746565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33610a8c610d3e565b856040518463ffffffff1660e01b8152600401610aab939291906125b1565b602060405180830381600087803b158015610ac557600080fd5b505af1158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd919061223b565b506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1631905090565b610bed611757565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190612786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610d76906129dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610da2906129dc565b8015610def5780601f10610dc457610100808354040283529160200191610def565b820191906000526020600020905b815481529060010190602001808311610dd257829003601f168201915b5050505050905090565b60008060026000610e08611757565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90612826565b60405180910390fd5b610ee2610ed0611757565b858584610edd919061290e565b61175f565b600191505092915050565b610ef5611757565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7990612786565b60405180910390fd5b600c60009054906101000a900460ff1615610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990612706565b60405180910390fd5b670de0b6b3a7640000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16311015611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612846565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f6919061214b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d4919061214b565b6040518363ffffffff1660e01b81526004016111f1929190612588565b602060405180830381600087803b15801561120b57600080fd5b505af115801561121f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611243919061214b565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611311601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c47565b611362600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961175f565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611420600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5b565b60405161142d9190612866565b60405180910390a36114a2600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163161149d600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5b565b611c8b565b6001600c60006101000a81548160ff02191690831515021790555042600d81905550565b60006114da6114d3611757565b848461192a565b6001905092915050565b6000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61159d611757565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611691906126a6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690612806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561183f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611836906126c6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161191d9190612866565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561199a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611991906127c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190612686565b60405180910390fd5b611a15838383611d74565b600c60009054906101000a900460ff168015611a47575062015180611a45600d544261200690919063ffffffff16565b105b15611aa55760105481611a5984610b5b565b611a6391906128b8565b1115611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90612726565b60405180910390fd5b5b611ab0838383612050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906126e6565b60405180910390fd5b8181611b43919061290e565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bd591906128b8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c399190612866565b60405180910390a350505050565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600080611cf9610d3e565b426040518863ffffffff1660e01b8152600401611d1b969594939291906125e8565b6060604051808303818588803b158015611d3457600080fd5b505af1158015611d48573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6d919061228d565b5050505050565b600c60009054906101000a900460ff168015611da557506104b0611da3600d544261200690919063ffffffff16565b105b1561200157600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200057600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fa6576b06765c793fa10079d0000000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611eb9919061256d565b60206040518083038186803b158015611ed157600080fd5b505afa158015611ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f099190612264565b11611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f40906127a6565b60405180910390fd5b600e5481611f5684610b5b565b611f6091906128b8565b1115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890612726565b60405180910390fd5b611fff565b600f5481611fb384610b5b565b611fbd91906128b8565b1115611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff590612726565b60405180910390fd5b5b5b5b505050565b600061204883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612055565b905092915050565b505050565b600083831115829061209d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120949190612664565b60405180910390fd5b50600083856120ac919061290e565b9050809150509392505050565b6000813590506120c881612e86565b92915050565b6000815190506120dd81612e86565b92915050565b6000815190506120f281612e9d565b92915050565b60008135905061210781612eb4565b92915050565b60008151905061211c81612eb4565b92915050565b60006020828403121561213457600080fd5b6000612142848285016120b9565b91505092915050565b60006020828403121561215d57600080fd5b600061216b848285016120ce565b91505092915050565b6000806040838503121561218757600080fd5b6000612195858286016120b9565b92505060206121a6858286016120b9565b9150509250929050565b6000806000606084860312156121c557600080fd5b60006121d3868287016120b9565b93505060206121e4868287016120b9565b92505060406121f5868287016120f8565b9150509250925092565b6000806040838503121561221257600080fd5b6000612220858286016120b9565b9250506020612231858286016120f8565b9150509250929050565b60006020828403121561224d57600080fd5b600061225b848285016120e3565b91505092915050565b60006020828403121561227657600080fd5b60006122848482850161210d565b91505092915050565b6000806000606084860312156122a257600080fd5b60006122b08682870161210d565b93505060206122c18682870161210d565b92505060406122d28682870161210d565b9150509250925092565b6122e581612942565b82525050565b6122f481612954565b82525050565b61230381612997565b82525050565b60006123148261289c565b61231e81856128a7565b935061232e8185602086016129a9565b61233781612a6c565b840191505092915050565b600061234f6023836128a7565b915061235a82612a7d565b604082019050919050565b60006123726026836128a7565b915061237d82612acc565b604082019050919050565b60006123956022836128a7565b91506123a082612b1b565b604082019050919050565b60006123b86026836128a7565b91506123c382612b6a565b604082019050919050565b60006123db6017836128a7565b91506123e682612bb9565b602082019050919050565b60006123fe6023836128a7565b915061240982612be2565b604082019050919050565b60006124216019836128a7565b915061242c82612c31565b602082019050919050565b60006124446028836128a7565b915061244f82612c5a565b604082019050919050565b60006124676020836128a7565b915061247282612ca9565b602082019050919050565b600061248a6018836128a7565b915061249582612cd2565b602082019050919050565b60006124ad6025836128a7565b91506124b882612cfb565b604082019050919050565b60006124d06019836128a7565b91506124db82612d4a565b602082019050919050565b60006124f36024836128a7565b91506124fe82612d73565b604082019050919050565b60006125166025836128a7565b915061252182612dc2565b604082019050919050565b6000612539604a836128a7565b915061254482612e11565b606082019050919050565b61255881612980565b82525050565b6125678161298a565b82525050565b600060208201905061258260008301846122dc565b92915050565b600060408201905061259d60008301856122dc565b6125aa60208301846122dc565b9392505050565b60006060820190506125c660008301866122dc565b6125d360208301856122dc565b6125e0604083018461254f565b949350505050565b600060c0820190506125fd60008301896122dc565b61260a602083018861254f565b61261760408301876122fa565b61262460608301866122fa565b61263160808301856122dc565b61263e60a083018461254f565b979650505050505050565b600060208201905061265e60008301846122eb565b92915050565b6000602082019050818103600083015261267e8184612309565b905092915050565b6000602082019050818103600083015261269f81612342565b9050919050565b600060208201905081810360008301526126bf81612365565b9050919050565b600060208201905081810360008301526126df81612388565b9050919050565b600060208201905081810360008301526126ff816123ab565b9050919050565b6000602082019050818103600083015261271f816123ce565b9050919050565b6000602082019050818103600083015261273f816123f1565b9050919050565b6000602082019050818103600083015261275f81612414565b9050919050565b6000602082019050818103600083015261277f81612437565b9050919050565b6000602082019050818103600083015261279f8161245a565b9050919050565b600060208201905081810360008301526127bf8161247d565b9050919050565b600060208201905081810360008301526127df816124a0565b9050919050565b600060208201905081810360008301526127ff816124c3565b9050919050565b6000602082019050818103600083015261281f816124e6565b9050919050565b6000602082019050818103600083015261283f81612509565b9050919050565b6000602082019050818103600083015261285f8161252c565b9050919050565b600060208201905061287b600083018461254f565b92915050565b6000602082019050612896600083018461255e565b92915050565b600081519050919050565b600082825260208201905092915050565b60006128c382612980565b91506128ce83612980565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561290357612902612a0e565b5b828201905092915050565b600061291982612980565b915061292483612980565b92508282101561293757612936612a0e565b5b828203905092915050565b600061294d82612960565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006129a282612980565b9050919050565b60005b838110156129c75780820151818401526020810190506129ac565b838111156129d6576000848401525b50505050565b600060028204905060018216806129f457607f821691505b60208210811415612a0857612a07612a3d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f537461727368697020616c726561647920646f636b6564000000000000000000600082015250565b7f5520617265206f6e6c7920616c6c6f7765642061206d61784261672054726f6f60008201527f7065720000000000000000000000000000000000000000000000000000000000602082015250565b7f436865636b2074686520746f6b656e20616c6c6f77616e636500000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e65656420746f20686f6c6420302e3032252053544152530000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6f6e6c7920657861637420746f6b656e7320616c6c6f77656400000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f537461726261736520436f6e747261637420726571756972657320612062616c60008201527f616e6365206f66206174206c6561737420312045544820746f20646f636b206f60208201527f6e20746865204261736500000000000000000000000000000000000000000000604082015250565b612e8f81612942565b8114612e9a57600080fd5b50565b612ea681612954565b8114612eb157600080fd5b50565b612ebd81612980565b8114612ec857600080fd5b5056fea2646970667358221220ed9c11e3129adbddd3f44b30cfc9f8c2a2b6535f06584366ec1f42652a32c1dc64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b6578063a457c2d71161006f578063a457c2d71461046f578063a647c14d146104ac578063a9059cbb146104c3578063d56a70e314610500578063dd62ed3e1461052b578063f2fde38b146105685761014b565b806370a082311461036f57806370adf910146103ac578063715018a6146103d7578063855f6926146103ee5780638da5cb5b1461041957806395d89b41146104445761014b565b80631b697481116101085780631b6974811461023957806323b872dd14610276578063313ce567146102b357806339509351146102de57806356a9f5931461031b5780635f0a37fd146103465761014b565b8063029a92511461015057806306fdde031461017b578063095ea7b3146101a657806314a72c87146101e357806318160ddd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610591565b6040516101729190612866565b60405180910390f35b34801561018757600080fd5b50610190610597565b60405161019d9190612664565b60405180910390f35b3480156101b257600080fd5b506101cd60048036038101906101c891906121ff565b610629565b6040516101da9190612649565b60405180910390f35b3480156101ef57600080fd5b506101f8610647565b604051610205919061256d565b60405180910390f35b34801561021a57600080fd5b50610223610671565b6040516102309190612866565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190612122565b61067b565b60405161026d9190612649565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906121b0565b6106d1565b6040516102aa9190612649565b60405180910390f35b3480156102bf57600080fd5b506102c86107d2565b6040516102d59190612881565b60405180910390f35b3480156102ea57600080fd5b50610305600480360381019061030091906121ff565b6107fa565b6040516103129190612649565b60405180910390f35b34801561032757600080fd5b506103306108a6565b60405161033d9190612866565b60405180910390f35b34801561035257600080fd5b5061036d600480360381019061036891906121ff565b6108ac565b005b34801561037b57600080fd5b5061039660048036038101906103919190612122565b610b5b565b6040516103a39190612866565b60405180910390f35b3480156103b857600080fd5b506103c1610ba4565b6040516103ce9190612866565b60405180910390f35b3480156103e357600080fd5b506103ec610be5565b005b3480156103fa57600080fd5b50610403610d38565b6040516104109190612866565b60405180910390f35b34801561042557600080fd5b5061042e610d3e565b60405161043b919061256d565b60405180910390f35b34801561045057600080fd5b50610459610d67565b6040516104669190612664565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906121ff565b610df9565b6040516104a39190612649565b60405180910390f35b3480156104b857600080fd5b506104c1610eed565b005b3480156104cf57600080fd5b506104ea60048036038101906104e591906121ff565b6114c6565b6040516104f79190612649565b60405180910390f35b34801561050c57600080fd5b506105156114e4565b604051610522919061256d565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190612174565b61150e565b60405161055f9190612866565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a9190612122565b611595565b005b60105481565b6060600580546105a6906129dc565b80601f01602080910402602001604051908101604052809291908181526020018280546105d2906129dc565b801561061f5780601f106105f45761010080835404028352916020019161061f565b820191906000526020600020905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b600061063d610636611757565b848461175f565b6001905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600454905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006106de84848461192a565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610729611757565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090612766565b60405180910390fd5b6107c6856107b5611757565b85846107c1919061290e565b61175f565b60019150509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000012905090565b600061089c610807611757565b848460026000610815611757565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461089791906128b8565b61175f565b6001905092915050565b600e5481565b6b06765c793fa10079d000000081146108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f1906127e6565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561095157600080fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016109b0929190612588565b60206040518083038186803b1580156109c857600080fd5b505afa1580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a009190612264565b905081811015610a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3c90612746565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33610a8c610d3e565b856040518463ffffffff1660e01b8152600401610aab939291906125b1565b602060405180830381600087803b158015610ac557600080fd5b505af1158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd919061223b565b506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1631905090565b610bed611757565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190612786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610d76906129dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610da2906129dc565b8015610def5780601f10610dc457610100808354040283529160200191610def565b820191906000526020600020905b815481529060010190602001808311610dd257829003601f168201915b5050505050905090565b60008060026000610e08611757565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90612826565b60405180910390fd5b610ee2610ed0611757565b858584610edd919061290e565b61175f565b600191505092915050565b610ef5611757565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7990612786565b60405180910390fd5b600c60009054906101000a900460ff1615610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990612706565b60405180910390fd5b670de0b6b3a7640000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16311015611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612846565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f6919061214b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d4919061214b565b6040518363ffffffff1660e01b81526004016111f1929190612588565b602060405180830381600087803b15801561120b57600080fd5b505af115801561121f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611243919061214b565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611311601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c47565b611362600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961175f565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611420600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5b565b60405161142d9190612866565b60405180910390a36114a2600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163161149d600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5b565b611c8b565b6001600c60006101000a81548160ff02191690831515021790555042600d81905550565b60006114da6114d3611757565b848461192a565b6001905092915050565b6000600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61159d611757565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611691906126a6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690612806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561183f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611836906126c6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161191d9190612866565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561199a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611991906127c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190612686565b60405180910390fd5b611a15838383611d74565b600c60009054906101000a900460ff168015611a47575062015180611a45600d544261200690919063ffffffff16565b105b15611aa55760105481611a5984610b5b565b611a6391906128b8565b1115611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90612726565b60405180910390fd5b5b611ab0838383612050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906126e6565b60405180910390fd5b8181611b43919061290e565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bd591906128b8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c399190612866565b60405180910390a350505050565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600080611cf9610d3e565b426040518863ffffffff1660e01b8152600401611d1b969594939291906125e8565b6060604051808303818588803b158015611d3457600080fd5b505af1158015611d48573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6d919061228d565b5050505050565b600c60009054906101000a900460ff168015611da557506104b0611da3600d544261200690919063ffffffff16565b105b1561200157600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200057600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fa6576b06765c793fa10079d0000000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611eb9919061256d565b60206040518083038186803b158015611ed157600080fd5b505afa158015611ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f099190612264565b11611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f40906127a6565b60405180910390fd5b600e5481611f5684610b5b565b611f6091906128b8565b1115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890612726565b60405180910390fd5b611fff565b600f5481611fb384610b5b565b611fbd91906128b8565b1115611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff590612726565b60405180910390fd5b5b5b5b505050565b600061204883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612055565b905092915050565b505050565b600083831115829061209d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120949190612664565b60405180910390fd5b50600083856120ac919061290e565b9050809150509392505050565b6000813590506120c881612e86565b92915050565b6000815190506120dd81612e86565b92915050565b6000815190506120f281612e9d565b92915050565b60008135905061210781612eb4565b92915050565b60008151905061211c81612eb4565b92915050565b60006020828403121561213457600080fd5b6000612142848285016120b9565b91505092915050565b60006020828403121561215d57600080fd5b600061216b848285016120ce565b91505092915050565b6000806040838503121561218757600080fd5b6000612195858286016120b9565b92505060206121a6858286016120b9565b9150509250929050565b6000806000606084860312156121c557600080fd5b60006121d3868287016120b9565b93505060206121e4868287016120b9565b92505060406121f5868287016120f8565b9150509250925092565b6000806040838503121561221257600080fd5b6000612220858286016120b9565b9250506020612231858286016120f8565b9150509250929050565b60006020828403121561224d57600080fd5b600061225b848285016120e3565b91505092915050565b60006020828403121561227657600080fd5b60006122848482850161210d565b91505092915050565b6000806000606084860312156122a257600080fd5b60006122b08682870161210d565b93505060206122c18682870161210d565b92505060406122d28682870161210d565b9150509250925092565b6122e581612942565b82525050565b6122f481612954565b82525050565b61230381612997565b82525050565b60006123148261289c565b61231e81856128a7565b935061232e8185602086016129a9565b61233781612a6c565b840191505092915050565b600061234f6023836128a7565b915061235a82612a7d565b604082019050919050565b60006123726026836128a7565b915061237d82612acc565b604082019050919050565b60006123956022836128a7565b91506123a082612b1b565b604082019050919050565b60006123b86026836128a7565b91506123c382612b6a565b604082019050919050565b60006123db6017836128a7565b91506123e682612bb9565b602082019050919050565b60006123fe6023836128a7565b915061240982612be2565b604082019050919050565b60006124216019836128a7565b915061242c82612c31565b602082019050919050565b60006124446028836128a7565b915061244f82612c5a565b604082019050919050565b60006124676020836128a7565b915061247282612ca9565b602082019050919050565b600061248a6018836128a7565b915061249582612cd2565b602082019050919050565b60006124ad6025836128a7565b91506124b882612cfb565b604082019050919050565b60006124d06019836128a7565b91506124db82612d4a565b602082019050919050565b60006124f36024836128a7565b91506124fe82612d73565b604082019050919050565b60006125166025836128a7565b915061252182612dc2565b604082019050919050565b6000612539604a836128a7565b915061254482612e11565b606082019050919050565b61255881612980565b82525050565b6125678161298a565b82525050565b600060208201905061258260008301846122dc565b92915050565b600060408201905061259d60008301856122dc565b6125aa60208301846122dc565b9392505050565b60006060820190506125c660008301866122dc565b6125d360208301856122dc565b6125e0604083018461254f565b949350505050565b600060c0820190506125fd60008301896122dc565b61260a602083018861254f565b61261760408301876122fa565b61262460608301866122fa565b61263160808301856122dc565b61263e60a083018461254f565b979650505050505050565b600060208201905061265e60008301846122eb565b92915050565b6000602082019050818103600083015261267e8184612309565b905092915050565b6000602082019050818103600083015261269f81612342565b9050919050565b600060208201905081810360008301526126bf81612365565b9050919050565b600060208201905081810360008301526126df81612388565b9050919050565b600060208201905081810360008301526126ff816123ab565b9050919050565b6000602082019050818103600083015261271f816123ce565b9050919050565b6000602082019050818103600083015261273f816123f1565b9050919050565b6000602082019050818103600083015261275f81612414565b9050919050565b6000602082019050818103600083015261277f81612437565b9050919050565b6000602082019050818103600083015261279f8161245a565b9050919050565b600060208201905081810360008301526127bf8161247d565b9050919050565b600060208201905081810360008301526127df816124a0565b9050919050565b600060208201905081810360008301526127ff816124c3565b9050919050565b6000602082019050818103600083015261281f816124e6565b9050919050565b6000602082019050818103600083015261283f81612509565b9050919050565b6000602082019050818103600083015261285f8161252c565b9050919050565b600060208201905061287b600083018461254f565b92915050565b6000602082019050612896600083018461255e565b92915050565b600081519050919050565b600082825260208201905092915050565b60006128c382612980565b91506128ce83612980565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561290357612902612a0e565b5b828201905092915050565b600061291982612980565b915061292483612980565b92508282101561293757612936612a0e565b5b828203905092915050565b600061294d82612960565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006129a282612980565b9050919050565b60005b838110156129c75780820151818401526020810190506129ac565b838111156129d6576000848401525b50505050565b600060028204905060018216806129f457607f821691505b60208210811415612a0857612a07612a3d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f537461727368697020616c726561647920646f636b6564000000000000000000600082015250565b7f5520617265206f6e6c7920616c6c6f7765642061206d61784261672054726f6f60008201527f7065720000000000000000000000000000000000000000000000000000000000602082015250565b7f436865636b2074686520746f6b656e20616c6c6f77616e636500000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e65656420746f20686f6c6420302e3032252053544152530000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6f6e6c7920657861637420746f6b656e7320616c6c6f77656400000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f537461726261736520436f6e747261637420726571756972657320612062616c60008201527f616e6365206f66206174206c6561737420312045544820746f20646f636b206f60208201527f6e20746865204261736500000000000000000000000000000000000000000000604082015250565b612e8f81612942565b8114612e9a57600080fd5b50565b612ea681612954565b8114612eb157600080fd5b50565b612ebd81612980565b8114612ec857600080fd5b5056fea2646970667358221220ed9c11e3129adbddd3f44b30cfc9f8c2a2b6535f06584366ec1f42652a32c1dc64736f6c63430008040033

Deployed Bytecode Sourcemap

34295:496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21138:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22100:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24267:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32331:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23220:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32980:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24918:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34688:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25751:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20973:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32450:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23391:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32199:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18451:148;;;;;;;;;;;;;:::i;:::-;;21055:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18237:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22319:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26469:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31375:693;;;;;;;;;;;;;:::i;:::-;;23731:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32080:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23969:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18607:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21138:55;;;;:::o;22100:100::-;22154:13;22187:5;22180:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22100:100;:::o;24267:169::-;24350:4;24367:39;24376:12;:10;:12::i;:::-;24390:7;24399:6;24367:8;:39::i;:::-;24424:4;24417:11;;24267:169;;;;:::o;32331:111::-;32391:7;32418:16;;;;;;;;;;;32411:23;;32331:111;:::o;23220:108::-;23281:7;23308:12;;23301:19;;23220:108;:::o;32980:139::-;33061:4;33084:12;:25;33097:11;33084:25;;;;;;;;;;;;;;;;;;;;;;;;;33077:32;;32980:139;;;:::o;24918:424::-;25024:4;25041:36;25051:6;25059:9;25070:6;25041:9;:36::i;:::-;25092:24;25119:11;:19;25131:6;25119:19;;;;;;;;;;;;;;;:33;25139:12;:10;:12::i;:::-;25119:33;;;;;;;;;;;;;;;;25092:60;;25191:6;25171:16;:26;;25163:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;25253:57;25262:6;25270:12;:10;:12::i;:::-;25303:6;25284:16;:25;;;;:::i;:::-;25253:8;:57::i;:::-;25330:4;25323:11;;;24918:424;;;;;:::o;34688:100::-;34746:5;34771:9;34764:16;;34688:100;:::o;25751:215::-;25839:4;25856:80;25865:12;:10;:12::i;:::-;25879:7;25925:10;25888:11;:25;25900:12;:10;:12::i;:::-;25888:25;;;;;;;;;;;;;;;:34;25914:7;25888:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;25856:8;:80::i;:::-;25954:4;25947:11;;25751:215;;;;:::o;20973:54::-;;;;:::o;32450:522::-;32545:21;32537:6;:29;32529:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32666:12;:27;32679:13;32666:27;;;;;;;;;;;;;;;;;;;;;;;;;32665:28;32657:37;;;;;;32705:22;32730:13;;;;;;;;;;;:23;;;32754:10;32774:4;32730:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32705:75;;32817:6;32799:14;:24;;32791:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32864:13;;;;;;;;;;;:26;;;32891:10;32903:7;:5;:7::i;:::-;32912:6;32864:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32958:4;32930:12;:27;32943:13;32930:27;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;32450:522;;;:::o;23391:127::-;23465:7;23492:9;:18;23502:7;23492:18;;;;;;;;;;;;;;;;23485:25;;23391:127;;;:::o;32199:118::-;32262:7;32289:12;;;;;;;;;;;:20;;;32282:27;;32199:118;:::o;18451:148::-;18374:12;:10;:12::i;:::-;18364:22;;:6;;;;;;;;;;:22;;;18356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18558:1:::1;18521:40;;18542:6;::::0;::::1;;;;;;;;18521:40;;;;;;;;;;;;18589:1;18572:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;18451:148::o:0;21055:55::-;;;;:::o;18237:79::-;18275:7;18302:6;;;;;;;;;;;18295:13;;18237:79;:::o;22319:104::-;22375:13;22408:7;22401:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22319:104;:::o;26469:377::-;26562:4;26579:24;26606:11;:25;26618:12;:10;:12::i;:::-;26606:25;;;;;;;;;;;;;;;:34;26632:7;26606:34;;;;;;;;;;;;;;;;26579:61;;26679:15;26659:16;:35;;26651:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;26747:67;26756:12;:10;:12::i;:::-;26770:7;26798:15;26779:16;:34;;;;:::i;:::-;26747:8;:67::i;:::-;26834:4;26827:11;;;26469:377;;;;:::o;31375:693::-;18374:12;:10;:12::i;:::-;18364:22;;:6;;;;;;;;;;:22;;;18356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31434:14:::1;;;;;;;;;;;31433:15;31425:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;31515:12;31491;;;;;;;;;;;:20;;;:36;;31483:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;31653:9;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31635:49;;;31685:12;;;;;;;;;;;31699:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31635:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31618:14;;:98;;;;;;;;;;;;;;;;;;31748:14;;;;;;;;;;;31723:7;;:40;;;;;;;;;;;;;;;;;;31770:27;31782:14;;;;;;;;;;;31770:11;:27::i;:::-;31804:45;31813:12;;;;;;;;;;;31827:16;;;;;;;;;;;20472:1;20463:11;31804:8;:45::i;:::-;31882:12;;;;;;;;;;;31861:59;;31871:9;;;;;;;;;;;31861:59;;;31896:23;31906:12;;;;;;;;;;;31896:9;:23::i;:::-;31861:59;;;;;;:::i;:::-;;;;;;;;31927:60;31941:12;;;;;;;;;;;:20;;;31963:23;31973:12;;;;;;;;;;;31963:9;:23::i;:::-;31927:13;:60::i;:::-;32011:4;31994:14;;:21;;;;;;;;;;;;;;;;;;32039:15;32027:9;:27;;;;31375:693::o:0;23731:175::-;23817:4;23834:42;23844:12;:10;:12::i;:::-;23858:9;23869:6;23834:9;:42::i;:::-;23894:4;23887:11;;23731:175;;;;:::o;32080:103::-;32136:7;32163:12;;;;;;;;;;;32156:19;;32080:103;:::o;23969:151::-;24058:7;24085:11;:18;24097:5;24085:18;;;;;;;;;;;;;;;:27;24104:7;24085:27;;;;;;;;;;;;;;;;24078:34;;23969:151;;;;:::o;18607:244::-;18374:12;:10;:12::i;:::-;18364:22;;:6;;;;;;;;;;:22;;;18356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18716:1:::1;18696:22;;:8;:22;;;;18688:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18806:8;18777:38;;18798:6;::::0;::::1;;;;;;;;18777:38;;;;;;;;;;;;18835:8;18826:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;18607:244:::0;:::o;17535:98::-;17588:7;17615:10;17608:17;;17535:98;:::o;30909:346::-;31028:1;31011:19;;:5;:19;;;;31003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31109:1;31090:21;;:7;:21;;;;31082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31193:6;31163:11;:18;31175:5;31163:18;;;;;;;;;;;;;;;:27;31182:7;31163:27;;;;;;;;;;;;;;;:36;;;;31231:7;31215:32;;31224:5;31215:32;;;31240:6;31215:32;;;;;;:::i;:::-;;;;;;;;30909:346;;;:::o;27336:875::-;27460:1;27442:20;;:6;:20;;;;27434:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27544:1;27523:23;;:9;:23;;;;27515:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27599:44;27618:6;27625:9;27636:6;27599:18;:44::i;:::-;27668:14;;;;;;;;;;;:58;;;;;27720:6;27687:30;27707:9;;27687:15;:19;;:30;;;;:::i;:::-;:39;27668:58;27665:179;;;27780:12;;27770:6;27747:20;27757:9;27747;:20::i;:::-;:29;;;;:::i;:::-;:45;;27739:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;27665:179;27870:47;27891:6;27899:9;27910:6;27870:20;:47::i;:::-;27930:21;27954:9;:17;27964:6;27954:17;;;;;;;;;;;;;;;;27930:41;;28007:6;27990:13;:23;;27982:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;28103:6;28087:13;:22;;;;:::i;:::-;28067:9;:17;28077:6;28067:17;;;;;;;;;;;;;;;:42;;;;28144:6;28120:9;:20;28130:9;28120:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;28185:9;28168:35;;28177:6;28168:35;;;28196:6;28168:35;;;;;;:::i;:::-;;;;;;;;27336:875;;;;:::o;31265:102::-;31348:11;31334:13;;:25;;;;;;;;;;;;;;;;;;31265:102;:::o;33828:192::-;33910:9;;;;;;;;;;;:25;;;33943:9;33954:12;;;;;;;;;;;33968:11;33981:1;33984;33987:7;:5;:7::i;:::-;33996:15;33910:102;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33828:192;;:::o;28225:799::-;28378:14;;;;;;;;;;;:61;;;;;28429:10;28396:30;28416:9;;28396:15;:19;;:30;;;;:::i;:::-;:43;28378:61;28375:638;;;28467:13;;;;;;;;;;;28459:21;;:6;:21;;;28456:534;;;28504:12;:23;28517:9;28504:23;;;;;;;;;;;;;;;;;;;;;;;;;28500:471;;28599:20;28564:13;;;;;;;;;;;:23;;;28588:9;28564:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;28556:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;28719:13;;28709:6;28686:20;28696:9;28686;:20::i;:::-;:29;;;;:::i;:::-;:46;;28678:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;28500:471;;;28869:14;;28859:6;28836:20;28846:9;28836;:20::i;:::-;:29;;;;:::i;:::-;:47;;28828:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;28500:471;28456:534;28375:638;28225:799;;;:::o;1366:136::-;1424:7;1451:43;1455:1;1458;1451:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1444:50;;1366:136;;;;:::o;33722:92::-;;;;:::o;1805:192::-;1891:7;1924:1;1919;:6;;1927:12;1911:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1951:9;1967:1;1963;:5;;;;:::i;:::-;1951:17;;1988:1;1981:8;;;1805:192;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;355:5;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:139::-;490:5;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;496:87;;;;:::o;589:143::-;646:5;677:6;671:13;662:22;;693:33;720:5;693:33;:::i;:::-;652:80;;;;:::o;738:262::-;797:6;846:2;834:9;825:7;821:23;817:32;814:2;;;862:1;859;852:12;814:2;905:1;930:53;975:7;966:6;955:9;951:22;930:53;:::i;:::-;920:63;;876:117;804:196;;;;:::o;1006:284::-;1076:6;1125:2;1113:9;1104:7;1100:23;1096:32;1093:2;;;1141:1;1138;1131:12;1093:2;1184:1;1209:64;1265:7;1256:6;1245:9;1241:22;1209:64;:::i;:::-;1199:74;;1155:128;1083:207;;;;:::o;1296:407::-;1364:6;1372;1421:2;1409:9;1400:7;1396:23;1392:32;1389:2;;;1437:1;1434;1427:12;1389:2;1480:1;1505:53;1550:7;1541:6;1530:9;1526:22;1505:53;:::i;:::-;1495:63;;1451:117;1607:2;1633:53;1678:7;1669:6;1658:9;1654:22;1633:53;:::i;:::-;1623:63;;1578:118;1379:324;;;;;:::o;1709:552::-;1786:6;1794;1802;1851:2;1839:9;1830:7;1826:23;1822:32;1819:2;;;1867:1;1864;1857:12;1819:2;1910:1;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1881:117;2037:2;2063:53;2108:7;2099:6;2088:9;2084:22;2063:53;:::i;:::-;2053:63;;2008:118;2165:2;2191:53;2236:7;2227:6;2216:9;2212:22;2191:53;:::i;:::-;2181:63;;2136:118;1809:452;;;;;:::o;2267:407::-;2335:6;2343;2392:2;2380:9;2371:7;2367:23;2363:32;2360:2;;;2408:1;2405;2398:12;2360:2;2451:1;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2422:117;2578:2;2604:53;2649:7;2640:6;2629:9;2625:22;2604:53;:::i;:::-;2594:63;;2549:118;2350:324;;;;;:::o;2680:278::-;2747:6;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2812:1;2809;2802:12;2764:2;2855:1;2880:61;2933:7;2924:6;2913:9;2909:22;2880:61;:::i;:::-;2870:71;;2826:125;2754:204;;;;:::o;2964:284::-;3034:6;3083:2;3071:9;3062:7;3058:23;3054:32;3051:2;;;3099:1;3096;3089:12;3051:2;3142:1;3167:64;3223:7;3214:6;3203:9;3199:22;3167:64;:::i;:::-;3157:74;;3113:128;3041:207;;;;:::o;3254:596::-;3342:6;3350;3358;3407:2;3395:9;3386:7;3382:23;3378:32;3375:2;;;3423:1;3420;3413:12;3375:2;3466:1;3491:64;3547:7;3538:6;3527:9;3523:22;3491:64;:::i;:::-;3481:74;;3437:128;3604:2;3630:64;3686:7;3677:6;3666:9;3662:22;3630:64;:::i;:::-;3620:74;;3575:129;3743:2;3769:64;3825:7;3816:6;3805:9;3801:22;3769:64;:::i;:::-;3759:74;;3714:129;3365:485;;;;;:::o;3856:118::-;3943:24;3961:5;3943:24;:::i;:::-;3938:3;3931:37;3921:53;;:::o;3980:109::-;4061:21;4076:5;4061:21;:::i;:::-;4056:3;4049:34;4039:50;;:::o;4095:147::-;4190:45;4229:5;4190:45;:::i;:::-;4185:3;4178:58;4168:74;;:::o;4248:364::-;4336:3;4364:39;4397:5;4364:39;:::i;:::-;4419:71;4483:6;4478:3;4419:71;:::i;:::-;4412:78;;4499:52;4544:6;4539:3;4532:4;4525:5;4521:16;4499:52;:::i;:::-;4576:29;4598:6;4576:29;:::i;:::-;4571:3;4567:39;4560:46;;4340:272;;;;;:::o;4618:366::-;4760:3;4781:67;4845:2;4840:3;4781:67;:::i;:::-;4774:74;;4857:93;4946:3;4857:93;:::i;:::-;4975:2;4970:3;4966:12;4959:19;;4764:220;;;:::o;4990:366::-;5132:3;5153:67;5217:2;5212:3;5153:67;:::i;:::-;5146:74;;5229:93;5318:3;5229:93;:::i;:::-;5347:2;5342:3;5338:12;5331:19;;5136:220;;;:::o;5362:366::-;5504:3;5525:67;5589:2;5584:3;5525:67;:::i;:::-;5518:74;;5601:93;5690:3;5601:93;:::i;:::-;5719:2;5714:3;5710:12;5703:19;;5508:220;;;:::o;5734:366::-;5876:3;5897:67;5961:2;5956:3;5897:67;:::i;:::-;5890:74;;5973:93;6062:3;5973:93;:::i;:::-;6091:2;6086:3;6082:12;6075:19;;5880:220;;;:::o;6106:366::-;6248:3;6269:67;6333:2;6328:3;6269:67;:::i;:::-;6262:74;;6345:93;6434:3;6345:93;:::i;:::-;6463:2;6458:3;6454:12;6447:19;;6252:220;;;:::o;6478:366::-;6620:3;6641:67;6705:2;6700:3;6641:67;:::i;:::-;6634:74;;6717:93;6806:3;6717:93;:::i;:::-;6835:2;6830:3;6826:12;6819:19;;6624:220;;;:::o;6850:366::-;6992:3;7013:67;7077:2;7072:3;7013:67;:::i;:::-;7006:74;;7089:93;7178:3;7089:93;:::i;:::-;7207:2;7202:3;7198:12;7191:19;;6996:220;;;:::o;7222:366::-;7364:3;7385:67;7449:2;7444:3;7385:67;:::i;:::-;7378:74;;7461:93;7550:3;7461:93;:::i;:::-;7579:2;7574:3;7570:12;7563:19;;7368:220;;;:::o;7594:366::-;7736:3;7757:67;7821:2;7816:3;7757:67;:::i;:::-;7750:74;;7833:93;7922:3;7833:93;:::i;:::-;7951:2;7946:3;7942:12;7935:19;;7740:220;;;:::o;7966:366::-;8108:3;8129:67;8193:2;8188:3;8129:67;:::i;:::-;8122:74;;8205:93;8294:3;8205:93;:::i;:::-;8323:2;8318:3;8314:12;8307:19;;8112:220;;;:::o;8338:366::-;8480:3;8501:67;8565:2;8560:3;8501:67;:::i;:::-;8494:74;;8577:93;8666:3;8577:93;:::i;:::-;8695:2;8690:3;8686:12;8679:19;;8484:220;;;:::o;8710:366::-;8852:3;8873:67;8937:2;8932:3;8873:67;:::i;:::-;8866:74;;8949:93;9038:3;8949:93;:::i;:::-;9067:2;9062:3;9058:12;9051:19;;8856:220;;;:::o;9082:366::-;9224:3;9245:67;9309:2;9304:3;9245:67;:::i;:::-;9238:74;;9321:93;9410:3;9321:93;:::i;:::-;9439:2;9434:3;9430:12;9423:19;;9228:220;;;:::o;9454:366::-;9596:3;9617:67;9681:2;9676:3;9617:67;:::i;:::-;9610:74;;9693:93;9782:3;9693:93;:::i;:::-;9811:2;9806:3;9802:12;9795:19;;9600:220;;;:::o;9826:366::-;9968:3;9989:67;10053:2;10048:3;9989:67;:::i;:::-;9982:74;;10065:93;10154:3;10065:93;:::i;:::-;10183:2;10178:3;10174:12;10167:19;;9972:220;;;:::o;10198:118::-;10285:24;10303:5;10285:24;:::i;:::-;10280:3;10273:37;10263:53;;:::o;10322:112::-;10405:22;10421:5;10405:22;:::i;:::-;10400:3;10393:35;10383:51;;:::o;10440:222::-;10533:4;10571:2;10560:9;10556:18;10548:26;;10584:71;10652:1;10641:9;10637:17;10628:6;10584:71;:::i;:::-;10538:124;;;;:::o;10668:332::-;10789:4;10827:2;10816:9;10812:18;10804:26;;10840:71;10908:1;10897:9;10893:17;10884:6;10840:71;:::i;:::-;10921:72;10989:2;10978:9;10974:18;10965:6;10921:72;:::i;:::-;10794:206;;;;;:::o;11006:442::-;11155:4;11193:2;11182:9;11178:18;11170:26;;11206:71;11274:1;11263:9;11259:17;11250:6;11206:71;:::i;:::-;11287:72;11355:2;11344:9;11340:18;11331:6;11287:72;:::i;:::-;11369;11437:2;11426:9;11422:18;11413:6;11369:72;:::i;:::-;11160:288;;;;;;:::o;11454:807::-;11703:4;11741:3;11730:9;11726:19;11718:27;;11755:71;11823:1;11812:9;11808:17;11799:6;11755:71;:::i;:::-;11836:72;11904:2;11893:9;11889:18;11880:6;11836:72;:::i;:::-;11918:80;11994:2;11983:9;11979:18;11970:6;11918:80;:::i;:::-;12008;12084:2;12073:9;12069:18;12060:6;12008:80;:::i;:::-;12098:73;12166:3;12155:9;12151:19;12142:6;12098:73;:::i;:::-;12181;12249:3;12238:9;12234:19;12225:6;12181:73;:::i;:::-;11708:553;;;;;;;;;:::o;12267:210::-;12354:4;12392:2;12381:9;12377:18;12369:26;;12405:65;12467:1;12456:9;12452:17;12443:6;12405:65;:::i;:::-;12359:118;;;;:::o;12483:313::-;12596:4;12634:2;12623:9;12619:18;12611:26;;12683:9;12677:4;12673:20;12669:1;12658:9;12654:17;12647:47;12711:78;12784:4;12775:6;12711:78;:::i;:::-;12703:86;;12601:195;;;;:::o;12802:419::-;12968:4;13006:2;12995:9;12991:18;12983:26;;13055:9;13049:4;13045:20;13041:1;13030:9;13026:17;13019:47;13083:131;13209:4;13083:131;:::i;:::-;13075:139;;12973:248;;;:::o;13227:419::-;13393:4;13431:2;13420:9;13416:18;13408:26;;13480:9;13474:4;13470:20;13466:1;13455:9;13451:17;13444:47;13508:131;13634:4;13508:131;:::i;:::-;13500:139;;13398:248;;;:::o;13652:419::-;13818:4;13856:2;13845:9;13841:18;13833:26;;13905:9;13899:4;13895:20;13891:1;13880:9;13876:17;13869:47;13933:131;14059:4;13933:131;:::i;:::-;13925:139;;13823:248;;;:::o;14077:419::-;14243:4;14281:2;14270:9;14266:18;14258:26;;14330:9;14324:4;14320:20;14316:1;14305:9;14301:17;14294:47;14358:131;14484:4;14358:131;:::i;:::-;14350:139;;14248:248;;;:::o;14502:419::-;14668:4;14706:2;14695:9;14691:18;14683:26;;14755:9;14749:4;14745:20;14741:1;14730:9;14726:17;14719:47;14783:131;14909:4;14783:131;:::i;:::-;14775:139;;14673:248;;;:::o;14927:419::-;15093:4;15131:2;15120:9;15116:18;15108:26;;15180:9;15174:4;15170:20;15166:1;15155:9;15151:17;15144:47;15208:131;15334:4;15208:131;:::i;:::-;15200:139;;15098:248;;;:::o;15352:419::-;15518:4;15556:2;15545:9;15541:18;15533:26;;15605:9;15599:4;15595:20;15591:1;15580:9;15576:17;15569:47;15633:131;15759:4;15633:131;:::i;:::-;15625:139;;15523:248;;;:::o;15777:419::-;15943:4;15981:2;15970:9;15966:18;15958:26;;16030:9;16024:4;16020:20;16016:1;16005:9;16001:17;15994:47;16058:131;16184:4;16058:131;:::i;:::-;16050:139;;15948:248;;;:::o;16202:419::-;16368:4;16406:2;16395:9;16391:18;16383:26;;16455:9;16449:4;16445:20;16441:1;16430:9;16426:17;16419:47;16483:131;16609:4;16483:131;:::i;:::-;16475:139;;16373:248;;;:::o;16627:419::-;16793:4;16831:2;16820:9;16816:18;16808:26;;16880:9;16874:4;16870:20;16866:1;16855:9;16851:17;16844:47;16908:131;17034:4;16908:131;:::i;:::-;16900:139;;16798:248;;;:::o;17052:419::-;17218:4;17256:2;17245:9;17241:18;17233:26;;17305:9;17299:4;17295:20;17291:1;17280:9;17276:17;17269:47;17333:131;17459:4;17333:131;:::i;:::-;17325:139;;17223:248;;;:::o;17477:419::-;17643:4;17681:2;17670:9;17666:18;17658:26;;17730:9;17724:4;17720:20;17716:1;17705:9;17701:17;17694:47;17758:131;17884:4;17758:131;:::i;:::-;17750:139;;17648:248;;;:::o;17902:419::-;18068:4;18106:2;18095:9;18091:18;18083:26;;18155:9;18149:4;18145:20;18141:1;18130:9;18126:17;18119:47;18183:131;18309:4;18183:131;:::i;:::-;18175:139;;18073:248;;;:::o;18327:419::-;18493:4;18531:2;18520:9;18516:18;18508:26;;18580:9;18574:4;18570:20;18566:1;18555:9;18551:17;18544:47;18608:131;18734:4;18608:131;:::i;:::-;18600:139;;18498:248;;;:::o;18752:419::-;18918:4;18956:2;18945:9;18941:18;18933:26;;19005:9;18999:4;18995:20;18991:1;18980:9;18976:17;18969:47;19033:131;19159:4;19033:131;:::i;:::-;19025:139;;18923:248;;;:::o;19177:222::-;19270:4;19308:2;19297:9;19293:18;19285:26;;19321:71;19389:1;19378:9;19374:17;19365:6;19321:71;:::i;:::-;19275:124;;;;:::o;19405:214::-;19494:4;19532:2;19521:9;19517:18;19509:26;;19545:67;19609:1;19598:9;19594:17;19585:6;19545:67;:::i;:::-;19499:120;;;;:::o;19625:99::-;19677:6;19711:5;19705:12;19695:22;;19684:40;;;:::o;19730:169::-;19814:11;19848:6;19843:3;19836:19;19888:4;19883:3;19879:14;19864:29;;19826:73;;;;:::o;19905:305::-;19945:3;19964:20;19982:1;19964:20;:::i;:::-;19959:25;;19998:20;20016:1;19998:20;:::i;:::-;19993:25;;20152:1;20084:66;20080:74;20077:1;20074:81;20071:2;;;20158:18;;:::i;:::-;20071:2;20202:1;20199;20195:9;20188:16;;19949:261;;;;:::o;20216:191::-;20256:4;20276:20;20294:1;20276:20;:::i;:::-;20271:25;;20310:20;20328:1;20310:20;:::i;:::-;20305:25;;20349:1;20346;20343:8;20340:2;;;20354:18;;:::i;:::-;20340:2;20399:1;20396;20392:9;20384:17;;20261:146;;;;:::o;20413:96::-;20450:7;20479:24;20497:5;20479:24;:::i;:::-;20468:35;;20458:51;;;:::o;20515:90::-;20549:7;20592:5;20585:13;20578:21;20567:32;;20557:48;;;:::o;20611:126::-;20648:7;20688:42;20681:5;20677:54;20666:65;;20656:81;;;:::o;20743:77::-;20780:7;20809:5;20798:16;;20788:32;;;:::o;20826:86::-;20861:7;20901:4;20894:5;20890:16;20879:27;;20869:43;;;:::o;20918:121::-;20976:9;21009:24;21027:5;21009:24;:::i;:::-;20996:37;;20986:53;;;:::o;21045:307::-;21113:1;21123:113;21137:6;21134:1;21131:13;21123:113;;;21222:1;21217:3;21213:11;21207:18;21203:1;21198:3;21194:11;21187:39;21159:2;21156:1;21152:10;21147:15;;21123:113;;;21254:6;21251:1;21248:13;21245:2;;;21334:1;21325:6;21320:3;21316:16;21309:27;21245:2;21094:258;;;;:::o;21358:320::-;21402:6;21439:1;21433:4;21429:12;21419:22;;21486:1;21480:4;21476:12;21507:18;21497:2;;21563:4;21555:6;21551:17;21541:27;;21497:2;21625;21617:6;21614:14;21594:18;21591:38;21588:2;;;21644:18;;:::i;:::-;21588:2;21409:269;;;;:::o;21684:180::-;21732:77;21729:1;21722:88;21829:4;21826:1;21819:15;21853:4;21850:1;21843:15;21870:180;21918:77;21915:1;21908:88;22015:4;22012:1;22005:15;22039:4;22036:1;22029:15;22056:102;22097:6;22148:2;22144:7;22139:2;22132:5;22128:14;22124:28;22114:38;;22104:54;;;:::o;22164:222::-;22304:34;22300:1;22292:6;22288:14;22281:58;22373:5;22368:2;22360:6;22356:15;22349:30;22270:116;:::o;22392:225::-;22532:34;22528:1;22520:6;22516:14;22509:58;22601:8;22596:2;22588:6;22584:15;22577:33;22498:119;:::o;22623:221::-;22763:34;22759:1;22751:6;22747:14;22740:58;22832:4;22827:2;22819:6;22815:15;22808:29;22729:115;:::o;22850:225::-;22990:34;22986:1;22978:6;22974:14;22967:58;23059:8;23054:2;23046:6;23042:15;23035:33;22956:119;:::o;23081:173::-;23221:25;23217:1;23209:6;23205:14;23198:49;23187:67;:::o;23260:222::-;23400:34;23396:1;23388:6;23384:14;23377:58;23469:5;23464:2;23456:6;23452:15;23445:30;23366:116;:::o;23488:175::-;23628:27;23624:1;23616:6;23612:14;23605:51;23594:69;:::o;23669:227::-;23809:34;23805:1;23797:6;23793:14;23786:58;23878:10;23873:2;23865:6;23861:15;23854:35;23775:121;:::o;23902:182::-;24042:34;24038:1;24030:6;24026:14;24019:58;24008:76;:::o;24090:174::-;24230:26;24226:1;24218:6;24214:14;24207:50;24196:68;:::o;24270:224::-;24410:34;24406:1;24398:6;24394:14;24387:58;24479:7;24474:2;24466:6;24462:15;24455:32;24376:118;:::o;24500:175::-;24640:27;24636:1;24628:6;24624:14;24617:51;24606:69;:::o;24681:223::-;24821:34;24817:1;24809:6;24805:14;24798:58;24890:6;24885:2;24877:6;24873:15;24866:31;24787:117;:::o;24910:224::-;25050:34;25046:1;25038:6;25034:14;25027:58;25119:7;25114:2;25106:6;25102:15;25095:32;25016:118;:::o;25140:298::-;25280:34;25276:1;25268:6;25264:14;25257:58;25349:34;25344:2;25336:6;25332:15;25325:59;25418:12;25413:2;25405:6;25401:15;25394:37;25246:192;:::o;25444:122::-;25517:24;25535:5;25517:24;:::i;:::-;25510:5;25507:35;25497:2;;25556:1;25553;25546:12;25497:2;25487:79;:::o;25572:116::-;25642:21;25657:5;25642:21;:::i;:::-;25635:5;25632:32;25622:2;;25678:1;25675;25668:12;25622:2;25612:76;:::o;25694:122::-;25767:24;25785:5;25767:24;:::i;:::-;25760:5;25757:35;25747:2;;25806:1;25803;25796:12;25747:2;25737:79;:::o

Swarm Source

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