ETH Price: $2,303.70 (-2.76%)

Token

BULLY (BULLY)
 

Overview

Max Total Supply

1,000,000,000,000 BULLY

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: BULLY 20
Balance
7,660,821,561.439976909288158173 BULLY

Value
$0.00
0xa286557b7889269099e6a8d506f41851c2d4bb4c
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:
BullyToken

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
// File @uniswap/v2-periphery/contracts/interfaces/[email protected]

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


// File @uniswap/v2-periphery/contracts/interfaces/[email protected]

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


// File @uniswap/v2-core/contracts/interfaces/[email protected]

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


// File @uniswap/v2-core/contracts/interfaces/[email protected]

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 contracts/BullyVerification/imports/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File contracts/BullyVerification/imports/contracts/access/Ownable.sol

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File contracts/BullyVerification/imports/contracts/token/ERC20/IERC20.sol

// OpenZeppelin Contracts (last updated v4.5.0) (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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        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 contracts/BullyVerification/imports/contracts/token/ERC20/extensions/IERC20Metadata.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

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

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

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


// File contracts/BullyVerification/imports/contracts/token/ERC20/ERC20.sol

// OpenZeppelin Contracts (last updated v4.5.0) (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 Contracts guidelines: functions revert
 * instead 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 {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    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);

        _afterTokenTransfer(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");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(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);
    }

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


// File contracts/BullyVerification/imports/contracts/token/ERC20/ERC20Burnable.sol

// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;
/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}


// File contracts/BullyVerification/Bully.sol

// BULLY TOKEN
// WE DON'T GIVE A FUCK

// website: https://thebullytoken.com
// telegram: https://t.me/BullyTokenPortal
// twitter: https://twitter.com/BullyTheToken

// Supply: 1 Trillion Tokens

// Initial Max Wallet: 1.5 billion tokens
// Initial Max Transaction: 1.5 billion tokens

pragma solidity ^0.8.15;
contract BullyToken is ERC20Burnable, Ownable {
    uint256 constant _initial_supply = 1 * (10**12) * (10**18);

    uint256 public tokensBurned;

    address payable public _treasuryWallet;
    address payable public _developmentWallet;
    address payable public _bullyWallet;

    uint256 public maxWalletSize = (_initial_supply * 155) / 10000; // 1.5%
    uint256 public maxTransactionSize = (_initial_supply * 155) / 10000; // 1.5%
    uint256 public swapThreshold = (_initial_supply * 15) / 100000; // .015%

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    mapping(address => bool) public _isBlocklistedBot;

    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isExcludedFromMaxTransaction;
    mapping(address => bool) public _isExcludedFromMaxWallet;

    enum FeeType {
        None,
        Buy,
        Sell
    }

    struct BuyFee {
        uint16 liquidity;
        uint16 treasury;
        uint16 dev;
        uint16 bully;
    }

    struct SellFee {
        uint16 liquidity;
        uint16 treasury;
        uint16 dev;
        uint16 bully;
    }

    BuyFee public buyFee;
    SellFee public sellFee;

    uint256 constant FEE_DENOM = 10000;

    event botAddedToBlocklist(address account);
    event botRemovedFromBlocklist(address account);

    event excludedFromFee(address account);
    event excludedFromMaxTransaction(address account);
    event excludedFromMaxWallet(address account);

    event includedInFee(address account);
    event includedInMaxTransaction(address account);
    event includedInMaxWallet(address account);

    event treasuryWalletUpdated(address treasuryWallet);
    event developmentWalletUpdated(address developmentWallet);
    event bullyWalletUpdated(address bullyWallet);

    event liquidityRemoved(uint256 amountToken, uint256 amountETH);

    event swapThresholdUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event MaxWalletSizeUpdated(uint256 maxWalletSize);
    event MaxTransactionSizeUpdated(uint256 maxTransactionSize);

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

    constructor(
        string memory name__,
        string memory symbol__,
        address newOwner,
        address treasury,
        address development,
        address bully
    ) ERC20(name__, symbol__) {
        setSellFee(4700, 0, 4800, 0);
        setBuyFee(4700, 0, 4800, 0);

        _treasuryWallet = payable(treasury);
        _developmentWallet = payable(development);
        _bullyWallet = payable(bully);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;


        _mint(newOwner, _initial_supply);

        _isExcludedFromFee[newOwner] = true;
        _isExcludedFromMaxTransaction[newOwner] = true;
        _isExcludedFromMaxWallet[newOwner] = true;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromMaxTransaction[address(this)] = true;
        _isExcludedFromMaxWallet[address(this)] = true;

        _isExcludedFromFee[_bullyWallet] = true;
        _isExcludedFromMaxTransaction[_bullyWallet] = true;
        _isExcludedFromMaxWallet[_bullyWallet] = true;

        _transferOwnership(newOwner);
    }

    receive() external payable {}


    function transfer(address to, uint256 amount)
        public
        override
        returns (bool)
    {
        address _owner = _msgSender();
        (bool takeFee, FeeType feeType) = checkFeeRequired(_owner, to);

        checkTransferAllowed(_owner, to, amount, takeFee);

        if (takeFee) {
            uint256 contractBalance = balanceOf(address(this));
            if (
                contractBalance >= swapThreshold &&
                !inSwapAndLiquify &&
                swapAndLiquifyEnabled &&
                _owner != uniswapV2Pair
            ) {
                swapAndLiquify(swapThreshold);
            }

            uint256 fee = calculateFee(amount, feeType);
            _transfer(_owner, address(this), fee);
            _transfer(_owner, to, amount - fee);
        } else {
            _transfer(_owner, to, amount);
        }

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public override returns (bool) {
        address spender = _msgSender();

        (bool takeFee, FeeType feeType) = checkFeeRequired(from, to);
        checkTransferAllowed(from, to, amount, takeFee);

        _spendAllowance(from, spender, amount);

        if (takeFee) {
            uint256 contractBalance = balanceOf(address(this));
            if (
                contractBalance >= swapThreshold &&
                !inSwapAndLiquify &&
                swapAndLiquifyEnabled &&
                from != uniswapV2Pair
            ) {
                swapAndLiquify(swapThreshold);
            }

            uint256 fee = calculateFee(amount, feeType);
            _transfer(from, address(this), fee);
            _transfer(from, to, amount - fee);
        } else {
            _transfer(from, to, amount);
        }

        return true;
    }

    function burn(uint256 amount) public override {
        _burn(_msgSender(), amount);
        tokensBurned += amount;
    }

    function burnFrom(address account, uint256 amount) public override {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
        tokensBurned += amount;
    }

    function checkTransferAllowed(
        address from,
        address to,
        uint256 amount,
        bool takeFee
    ) internal view {
        require(
            !_isBlocklistedBot[from] || !_isBlocklistedBot[to],
            "You are blocklisted"
        );
        if (to != uniswapV2Pair) {
            require(
                balanceOf(to) + amount < maxWalletSize ||
                    _isExcludedFromMaxWallet[to],
                "Exceeds receivers maximum wallet size"
            );
        }
        if (takeFee) {
            require(
                amount <= maxTransactionSize ||
                    (_isExcludedFromMaxTransaction[from] ||
                        _isExcludedFromMaxTransaction[to]),
                "Transaction larger than allowed"
            );
        }
    }

    function checkFeeRequired(address from, address to)
        internal
        view
        returns (bool, FeeType)
    {
        if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
            return (true, FeeType.Buy);
        } else if (to == uniswapV2Pair && !_isExcludedFromFee[from]) {
            return (true, FeeType.Sell);
        } else {
            return (false, FeeType.None);
        }
    }

    function calculateFee(uint256 amount, FeeType feeType)
        internal
        view
        returns (uint256 fee)
    {
        uint256 feePercentage = 0;
        if (feeType == FeeType.Buy) {
            feePercentage =
                buyFee.treasury +
                buyFee.liquidity +
                buyFee.dev +
                buyFee.bully;
        } else if (feeType == FeeType.Sell) {
            feePercentage =
                sellFee.treasury +
                sellFee.liquidity +
                sellFee.dev +
                sellFee.bully;
        }
        fee = (amount * feePercentage) / FEE_DENOM;

        return fee;
    }

    function swapAndLiquify(uint256 tokens) internal lockTheSwap {
        uint256 feeDenominator = buyFee.treasury +
            buyFee.liquidity +
            buyFee.dev +
            buyFee.bully;

        if(feeDenominator == 0){
            return;
        }

        uint256 liquidityFee = (tokens * buyFee.liquidity) / feeDenominator;

        swapTokensForEth(tokens - (liquidityFee / 2));

        uint256 contractEth = address(this).balance;

        uint256 ethDenominator = buyFee.treasury +
            (buyFee.liquidity / 2) +
            buyFee.dev +
            buyFee.bully;

        uint256 treasuryEth = (contractEth * buyFee.treasury) / ethDenominator;
        uint256 liquidityEth = (contractEth * (buyFee.liquidity / 2)) /
            ethDenominator;
        uint256 bullyEth = (contractEth * buyFee.bully) / ethDenominator;

        if (liquidityEth > 0) {
            addLiquidity(liquidityFee / 2, liquidityEth);
        }

        _treasuryWallet.transfer(treasuryEth);

        _bullyWallet.transfer(bullyEth);

        _developmentWallet.transfer(address(this).balance); 

        emit SwapAndLiquify(tokens, contractEth, liquidityFee / 2);
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    function setTreasuryWallet(address treasury) external onlyOwner {
        require(treasury != address(0), "Treasury wallet cannot be 0x0");
        _treasuryWallet = payable(treasury);
        emit treasuryWalletUpdated(_treasuryWallet);
    }

    function setDevelopmentWallet(address development) external onlyOwner {
        require(development != address(0), "Development wallet cannot be 0x0");
        _developmentWallet = payable(development);
        emit developmentWalletUpdated(_developmentWallet);
    }

    function setBullyWallet(address bully) external onlyOwner {
        require(bully != address(0), "Bully wallet cannot be 0x0");
        _bullyWallet = payable(bully);
        emit bullyWalletUpdated(_treasuryWallet);
    }

    function setSellFee(
        uint16 liquidity,
        uint16 treasury,
        uint16 dev,
        uint16 bully
    ) public onlyOwner {
        require(
            liquidity + treasury + dev + bully < FEE_DENOM,
            "invalid fee structure"
        );

        sellFee.treasury = treasury;
        sellFee.liquidity = liquidity;
        sellFee.dev = dev;
        sellFee.bully = bully;
    }

    function setBuyFee(
        uint16 liquidity,
        uint16 treasury,
        uint16 dev,
        uint16 bully
    ) public onlyOwner {
        require(
            liquidity + treasury + dev + bully < FEE_DENOM,
            "invalid fee structure"
        );

        buyFee.treasury = treasury;
        buyFee.liquidity = liquidity;
        buyFee.dev = dev;
        buyFee.bully = bully;
    }

    function setFees(
        uint16 buy_liquidity,
        uint16 buy_treasury,
        uint16 buy_dev,
        uint16 buy_bully,
        uint16 sell_liquidity,
        uint16 sell_treasury,
        uint16 sell_dev,
        uint16 sell_bully
    ) external onlyOwner {
        setBuyFee(buy_liquidity, buy_treasury, buy_dev, buy_bully);
        setSellFee(sell_liquidity, sell_treasury, sell_dev, sell_bully);
    }

    function setSwapThreshold(uint256 newSwapThreshold) external onlyOwner {
        swapThreshold = newSwapThreshold;
        emit swapThresholdUpdated(newSwapThreshold);
    }

    function setMaxTransactionSize(uint256 maxTxSize) external onlyOwner {
        maxTransactionSize = maxTxSize;
        emit MaxTransactionSizeUpdated(maxTransactionSize);
    }

    function setMaxWalletSize(uint256 maxWallet) external onlyOwner {
        maxWalletSize = maxWallet;
        emit MaxWalletSizeUpdated(maxWalletSize);
    }

    function addBotToBlocklist(address account) external onlyOwner {
        require(!_isBlocklistedBot[account], "Account is already blocklisted");
        _isBlocklistedBot[account] = true;

        emit botAddedToBlocklist(account);
    }

    function removeBotFromBlocklist(address account) external onlyOwner {
        require(_isBlocklistedBot[account], "Account is not blocklisted");
        _isBlocklistedBot[account] = false;

        emit botRemovedFromBlocklist(account);
    }

    function excludeFromFee(address account) external onlyOwner {
        require(
            !_isExcludedFromFee[account],
            "Account is already excluded from fee"
        );
        _isExcludedFromFee[account] = true;

        emit excludedFromFee(account);
    }

    function excludeFromMaxTransaction(address account) external onlyOwner {
        require(
            !_isExcludedFromMaxTransaction[account],
            "Account is already excluded from max transaction"
        );
        _isExcludedFromMaxTransaction[account] = true;

        emit excludedFromMaxTransaction(account);
    }

    function excludeFromMaxWallet(address account) external onlyOwner {
        require(
            !_isExcludedFromMaxWallet[account],
            "Account is already excluded from max wallet"
        );
        _isExcludedFromMaxWallet[account] = true;

        emit excludedFromMaxWallet(account);
    }

    function includeInFee(address account) external onlyOwner {
        require(
            _isExcludedFromFee[account],
            "Account is already included in fee"
        );
        _isExcludedFromFee[account] = false;

        emit includedInFee(account);
    }

    function includeInMaxTransaction(address account) external onlyOwner {
        require(
            _isExcludedFromMaxTransaction[account],
            "Account is already included in max transaction"
        );
        _isExcludedFromMaxTransaction[account] = false;

        emit includedInMaxTransaction(account);
    }

    function includeInMaxWallet(address account) external onlyOwner {
        require(
            _isExcludedFromMaxWallet[account],
            "Account is already included in max wallet"
        );
        _isExcludedFromMaxWallet[account] = false;

        emit includedInMaxWallet(account);
    }

    function toggleSwapAndLiquifyEnabled() external onlyOwner {
        swapAndLiquifyEnabled = !swapAndLiquifyEnabled;
        emit SwapAndLiquifyEnabledUpdated(swapAndLiquifyEnabled);
    }

    function adminSwapAndLiquify(uint256 swapBalance) external onlyOwner {
        swapAndLiquify(swapBalance);
    }


    function withdrawEth() external payable onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function withdrawTokens(address _stuckToken, uint256 _amount)
        external
        onlyOwner
    {
        IERC20(_stuckToken).transfer(msg.sender, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name__","type":"string"},{"internalType":"string","name":"symbol__","type":"string"},{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"bully","type":"address"}],"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":false,"internalType":"uint256","name":"maxTransactionSize","type":"uint256"}],"name":"MaxTransactionSizeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"MaxWalletSizeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlocklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlocklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"bullyWallet","type":"address"}],"name":"bullyWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"developmentWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"excludedFromMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"excludedFromMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"includedInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"includedInMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"includedInMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"liquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"swapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"treasuryWallet","type":"address"}],"name":"treasuryWalletUpdated","type":"event"},{"inputs":[],"name":"_bullyWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlocklistedBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlocklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapBalance","type":"uint256"}],"name":"adminSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"bully","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxWallet","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":[],"name":"maxTransactionSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlocklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"bully","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bully","type":"address"}],"name":"setBullyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"bully","type":"uint16"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"development","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buy_liquidity","type":"uint16"},{"internalType":"uint16","name":"buy_treasury","type":"uint16"},{"internalType":"uint16","name":"buy_dev","type":"uint16"},{"internalType":"uint16","name":"buy_bully","type":"uint16"},{"internalType":"uint16","name":"sell_liquidity","type":"uint16"},{"internalType":"uint16","name":"sell_treasury","type":"uint16"},{"internalType":"uint16","name":"sell_dev","type":"uint16"},{"internalType":"uint16","name":"sell_bully","type":"uint16"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxSize","type":"uint256"}],"name":"setMaxTransactionSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"bully","type":"uint16"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_stuckToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052612710620000216c0c9f2c9cd04674edea40000000609b6200074c565b6200002d91906200076c565b600a556127106200004d6c0c9f2c9cd04674edea40000000609b6200074c565b6200005991906200076c565b600b55620186a06200007a6c0c9f2c9cd04674edea40000000600f6200074c565b6200008691906200076c565b600c55600d805461ff001916610100179055348015620000a4575f80fd5b5060405162003be438038062003be4833981016040819052620000c79162000869565b85856003620000d783826200099f565b506004620000e682826200099f565b50505062000103620000fd620003ba60201b60201c565b620003be565b6200011561125c5f6112c0816200040f565b6200012761125c5f6112c08162000532565b600780546001600160a01b038086166001600160a01b0319928316179092556008805485841690831617905560098054928416929091169190911790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001b6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001dc919062000a6b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000228573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024e919062000a6b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000299573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000a6b565b6001600160a01b0390811660a0528116608052620002eb856c0c9f2c9cd04674edea4000000062000651565b6001600160a01b038581165f908152600f602081815260408084208054600160ff1991821681179092556010808552838720805483168417905560118086528488208054841685179055308852868652848820805484168517905581865284882080548416851790558086528488208054841685179055600980548a1689529686528488208054841685179055865489168852908552838720805483168417905594549096168552929091529091208054909216179055620003ad85620003be565b5050505050505062000ac9565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b031633146200045d5760405162461bcd60e51b815260206004820181905260248201525f8051602062003bc483398151915260448201526064015b60405180910390fd5b61271081836200046e868862000a8e565b6200047a919062000a8e565b62000486919062000a8e565b61ffff1610620004d95760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420666565207374727563747572650000000000000000000000604482015260640162000454565b6013805461ffff92831666010000000000000261ffff60301b199484166401000000000265ffff0000ffff1996851662010000029690961665ffffffffffff199092169190911795909216949094179290921716179055565b6005546001600160a01b031633146200057c5760405162461bcd60e51b815260206004820181905260248201525f8051602062003bc4833981519152604482015260640162000454565b61271081836200058d868862000a8e565b62000599919062000a8e565b620005a5919062000a8e565b61ffff1610620005f85760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420666565207374727563747572650000000000000000000000604482015260640162000454565b6012805461ffff92831666010000000000000261ffff60301b199484166401000000000265ffff0000ffff1996851662010000029690961665ffffffffffff199092169190911795909216949094179290921716179055565b6001600160a01b038216620006a95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000454565b8060025f828254620006bc919062000ab3565b90915550506001600160a01b0382165f9081526020819052604081208054839290620006ea90849062000ab3565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000766576200076662000738565b92915050565b5f826200078757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620007b0575f80fd5b81516001600160401b0380821115620007cd57620007cd6200078c565b604051601f8301601f19908116603f01168101908282118183101715620007f857620007f86200078c565b816040528381526020925086602085880101111562000815575f80fd5b5f91505b8382101562000838578582018301518183018401529082019062000819565b5f602085830101528094505050505092915050565b80516001600160a01b038116811462000864575f80fd5b919050565b5f805f805f8060c087890312156200087f575f80fd5b86516001600160401b038082111562000896575f80fd5b620008a48a838b01620007a0565b97506020890151915080821115620008ba575f80fd5b50620008c989828a01620007a0565b955050620008da604088016200084d565b9350620008ea606088016200084d565b9250620008fa608088016200084d565b91506200090a60a088016200084d565b90509295509295509295565b600181811c908216806200092b57607f821691505b6020821081036200094a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200073357805f5260205f20601f840160051c81016020851015620009775750805b601f840160051c820191505b8181101562000998575f815560010162000983565b5050505050565b81516001600160401b03811115620009bb57620009bb6200078c565b620009d381620009cc845462000916565b8462000950565b602080601f83116001811462000a09575f8415620009f15750858301515b5f19600386901b1c1916600185901b17855562000a63565b5f85815260208120601f198616915b8281101562000a395788860151825594840194600190910190840162000a18565b508582101562000a5757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000a7c575f80fd5b62000a87826200084d565b9392505050565b61ffff81811683821601908082111562000aac5762000aac62000738565b5092915050565b8082018082111562000766576200076662000738565b60805160a05161309362000b315f395f818161061801528181610c0f01528181611a4701528181611f1201528181611f7b015261207301525f81816103c5015281816129c901528181612a8001528181612abc01528181612b300152612b8b01526130935ff3fe608060405260043610610310575f3560e01c806372ac2486116101a3578063a0ef91df116100f2578063dd62ed3e11610092578063ea2f0b371161006d578063ea2f0b37146109e0578063eb62b534146109ff578063f2fde38b14610a13578063f562c60014610a32575f80fd5b8063dd62ed3e14610968578063e7873b58146109ac578063ea1644d5146109c1575f80fd5b8063a8602fea116100cd578063a8602fea146108dd578063a9059cbb146108fc578063a9e59da31461091b578063d1d7d7ef1461093a575f80fd5b8063a0ef91df14610897578063a457c2d71461089f578063a4d4620f146108be575f80fd5b806385320beb1161015d5780638f3fa860116101385780638f3fa8601461083057806395d89b41146108455780639d0014b1146108595780639f27b65714610878575f80fd5b806385320beb146107d55780638da5cb5b146107f45780638dc6443914610811575f80fd5b806372ac2486146106fd57806373aa25b41461071c578063768dc7101461073b57806379cc6790146107695780637be85568146107885780637cf14024146107b6575f80fd5b806332a710b91161025f57806349bd5a5e116102195780635bcbe877116101f45780635bcbe877146106775780636adf68181461069657806370a08231146106b5578063715018a6146106e9575f80fd5b806349bd5a5e146106075780634a74bb021461063a5780635b700d9114610658575f80fd5b806332a710b91461052557806339509351146105535780633f33e9091461057257806342966c6814610591578063437823ec146105b057806347062402146105cf575f80fd5b806323b872dd116102ca578063269d1faa116102a5578063269d1faa1461047057806328b13b611461048f5780632b14ca56146104a4578063313ce5671461050a575f80fd5b806323b872dd1461041357806323be39041461043257806325e2eea314610451575f80fd5b80630445b6671461031b57806306b091f91461034357806306fdde0314610364578063095ea7b3146103855780631694505e146103b457806318160ddd146103ff575f80fd5b3661031757005b5f80fd5b348015610326575f80fd5b50610330600c5481565b6040519081526020015b60405180910390f35b34801561034e575f80fd5b5061036261035d366004612c1b565b610a51565b005b34801561036f575f80fd5b50610378610af7565b60405161033a9190612c45565b348015610390575f80fd5b506103a461039f366004612c1b565b610b87565b604051901515815260200161033a565b3480156103bf575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161033a565b34801561040a575f80fd5b50600254610330565b34801561041e575f80fd5b506103a461042d366004612c91565b610ba0565b34801561043d575f80fd5b5061036261044c366004612ccf565b610c9f565b34801561045c575f80fd5b5061036261046b366004612ccf565b610d7a565b34801561047b575f80fd5b506007546103e7906001600160a01b031681565b34801561049a575f80fd5b50610330600b5481565b3480156104af575f80fd5b506013546104dc9061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161033a565b348015610515575f80fd5b506040516012815260200161033a565b348015610530575f80fd5b506103a461053f366004612ccf565b60106020525f908152604090205460ff1681565b34801561055e575f80fd5b506103a461056d366004612c1b565b610e5b565b34801561057d575f80fd5b5061036261058c366004612ccf565b610e99565b34801561059c575f80fd5b506103626105ab366004612cf1565b610f8c565b3480156105bb575f80fd5b506103626105ca366004612ccf565b610faf565b3480156105da575f80fd5b506012546104dc9061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b348015610612575f80fd5b506103e77f000000000000000000000000000000000000000000000000000000000000000081565b348015610645575f80fd5b50600d546103a490610100900460ff1681565b348015610663575f80fd5b50610362610672366004612ccf565b6110a0565b348015610682575f80fd5b50610362610691366004612d1e565b611199565b3480156106a1575f80fd5b506103626106b0366004612ccf565b611287565b3480156106c0575f80fd5b506103306106cf366004612ccf565b6001600160a01b03165f9081526020819052604090205490565b3480156106f4575f80fd5b5061036261137f565b348015610708575f80fd5b50610362610717366004612ccf565b6113b4565b348015610727575f80fd5b506009546103e7906001600160a01b031681565b348015610746575f80fd5b506103a4610755366004612ccf565b600f6020525f908152604090205460ff1681565b348015610774575f80fd5b50610362610783366004612c1b565b611482565b348015610793575f80fd5b506103a46107a2366004612ccf565b600e6020525f908152604090205460ff1681565b3480156107c1575f80fd5b506103626107d0366004612ccf565b6114b1565b3480156107e0575f80fd5b506008546103e7906001600160a01b031681565b3480156107ff575f80fd5b506005546001600160a01b03166103e7565b34801561081c575f80fd5b5061036261082b366004612d1e565b6115af565b34801561083b575f80fd5b50610330600a5481565b348015610850575f80fd5b5061037861169d565b348015610864575f80fd5b50610362610873366004612cf1565b6116ac565b348015610883575f80fd5b50610362610892366004612cf1565b61170b565b610362611741565b3480156108aa575f80fd5b506103a46108b9366004612c1b565b611794565b3480156108c9575f80fd5b506103626108d8366004612ccf565b611830565b3480156108e8575f80fd5b506103626108f7366004612ccf565b611915565b348015610907575f80fd5b506103a4610916366004612c1b565b6119e3565b348015610926575f80fd5b50610362610935366004612cf1565b611ad1565b348015610945575f80fd5b506103a4610954366004612ccf565b60116020525f908152604090205460ff1681565b348015610973575f80fd5b50610330610982366004612d6f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156109b7575f80fd5b5061033060065481565b3480156109cc575f80fd5b506103626109db366004612cf1565b611b30565b3480156109eb575f80fd5b506103626109fa366004612ccf565b611b8f565b348015610a0a575f80fd5b50610362611c7b565b348015610a1e575f80fd5b50610362610a2d366004612ccf565b611d07565b348015610a3d575f80fd5b50610362610a4c366004612da6565b611d9f565b6005546001600160a01b03163314610a845760405162461bcd60e51b8152600401610a7b90612e38565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af29190612e6d565b505050565b606060038054610b0690612e8c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3290612e8c565b8015610b7d5780601f10610b5457610100808354040283529160200191610b7d565b820191905f5260205f20905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b5f33610b94818585611deb565b60019150505b92915050565b5f338180610bae8787611f0e565b91509150610bbe87878785611ff0565b610bc98784876121f4565b8115610c8757305f90815260208190526040902054600c548110801590610bf35750600d5460ff16155b8015610c065750600d54610100900460ff165b8015610c4457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b15610c5457610c54600c5461227e565b5f610c5f8784612521565b9050610c6c89308361260c565b610c808989610c7b848b612ed8565b61260c565b5050610c92565b610c9287878761260c565b5060019695505050505050565b6005546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b038116610d1f5760405162461bcd60e51b815260206004820152601a60248201527f42756c6c792077616c6c65742063616e6e6f74206265203078300000000000006044820152606401610a7b565b600980546001600160a01b0319166001600160a01b0383811691909117909155600754604051911681527fcefb7ff3c0280d7758c89c795887115f275ec7b8728b203f2428d74c703fe6fc906020015b60405180910390a150565b6005546001600160a01b03163314610da45760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600e602052604090205460ff16610e0b5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c6f636b6c69737465640000000000006044820152606401610a7b565b6001600160a01b0381165f818152600e6020908152604091829020805460ff1916905590519182527f37fc2206e80f9f32817bca5bf743642024905b0e79312774a6b76d750337014e9101610d6f565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190610b949082908690610e94908790612eeb565b611deb565b6005546001600160a01b03163314610ec35760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526011602052604090205460ff16610f3c5760405162461bcd60e51b815260206004820152602960248201527f4163636f756e7420697320616c726561647920696e636c7564656420696e206d604482015268185e081dd85b1b195d60ba1b6064820152608401610a7b565b6001600160a01b0381165f81815260116020908152604091829020805460ff1916905590519182527f0146ecf0f3e959e006d0380e7d8a829b041286e7cdb8fe2c017a9374ac9ba9bc9101610d6f565b610f9633826127d8565b8060065f828254610fa79190612eeb565b909155505050565b6005546001600160a01b03163314610fd95760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600f602052604090205460ff161561104d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d6044820152632066656560e01b6064820152608401610a7b565b6001600160a01b0381165f818152600f6020908152604091829020805460ff1916600117905590519182527f85ecafd7b8cfcceb72ea6978547a39f89631bf423eea19a63ce8d3881ec51e039101610d6f565b6005546001600160a01b031633146110ca5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526011602052604090205460ff16156111465760405162461bcd60e51b815260206004820152602b60248201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d60448201526a081b585e081dd85b1b195d60aa1b6064820152608401610a7b565b6001600160a01b0381165f81815260116020908152604091829020805460ff1916600117905590519182527f7d99f9a4158245b2d0ffb50768db33ed6d5e4146f7e27db2b1c87133148b907a9101610d6f565b6005546001600160a01b031633146111c35760405162461bcd60e51b8152600401610a7b90612e38565b61271081836111d28688612efe565b6111dc9190612efe565b6111e69190612efe565b61ffff161061122f5760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206665652073747275637475726560581b6044820152606401610a7b565b6013805461ffff928316600160301b0267ffff00000000000019948416600160201b0265ffff0000ffff1996851662010000029690961665ffffffffffff199092169190911795909216949094179290921716179055565b6005546001600160a01b031633146112b15760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526010602052604090205460ff1661132f5760405162461bcd60e51b815260206004820152602e60248201527f4163636f756e7420697320616c726561647920696e636c7564656420696e206d60448201526d30bc103a3930b739b0b1ba34b7b760911b6064820152608401610a7b565b6001600160a01b0381165f81815260106020908152604091829020805460ff1916905590519182527f628f9fc26f194733f0575c94bd0ac205c2c61093f83b9ed913762ca6a5142efd9101610d6f565b6005546001600160a01b031633146113a95760405162461bcd60e51b8152600401610a7b90612e38565b6113b25f612923565b565b6005546001600160a01b031633146113de5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381166114345760405162461bcd60e51b815260206004820181905260248201527f446576656c6f706d656e742077616c6c65742063616e6e6f74206265203078306044820152606401610a7b565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f3de80392900a85a257c33c60def3bf626743ce3bd0221318559b8bfae76b1fb890602001610d6f565b61148d8233836121f4565b61149782826127d8565b8060065f8282546114a89190612eeb565b90915550505050565b6005546001600160a01b031633146114db5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526010602052604090205460ff161561155c5760405162461bcd60e51b815260206004820152603060248201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d60448201526f1036b0bc103a3930b739b0b1ba34b7b760811b6064820152608401610a7b565b6001600160a01b0381165f81815260106020908152604091829020805460ff1916600117905590519182527f926ada6c4eef2af9b9880421dcf6e88d1a21f645e07a0b0c219347090ff95bb59101610d6f565b6005546001600160a01b031633146115d95760405162461bcd60e51b8152600401610a7b90612e38565b61271081836115e88688612efe565b6115f29190612efe565b6115fc9190612efe565b61ffff16106116455760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206665652073747275637475726560581b6044820152606401610a7b565b6012805461ffff928316600160301b0267ffff00000000000019948416600160201b0265ffff0000ffff1996851662010000029690961665ffffffffffff199092169190911795909216949094179290921716179055565b606060048054610b0690612e8c565b6005546001600160a01b031633146116d65760405162461bcd60e51b8152600401610a7b90612e38565b600c8190556040518181527f674515d9dd103f6dd90c092a960b3a3905ecfc07da656d2ede6512afbffa091990602001610d6f565b6005546001600160a01b031633146117355760405162461bcd60e51b8152600401610a7b90612e38565b61173e8161227e565b50565b6005546001600160a01b0316331461176b5760405162461bcd60e51b8152600401610a7b90612e38565b60405133904780156108fc02915f818181858888f1935050505015801561173e573d5f803e3d5ffd5b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190838110156118185760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a7b565b6118258286868403611deb565b506001949350505050565b6005546001600160a01b0316331461185a5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600e602052604090205460ff16156118c25760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c6f636b6c697374656400006044820152606401610a7b565b6001600160a01b0381165f818152600e6020908152604091829020805460ff1916600117905590519182527f13d669a4a4b3d301172e68e17e2c7a94051a3ed56d9bce740d781805e02e25639101610d6f565b6005546001600160a01b0316331461193f5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381166119955760405162461bcd60e51b815260206004820152601d60248201527f54726561737572792077616c6c65742063616e6e6f74206265203078300000006044820152606401610a7b565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fa11ce8775af13e1c057faa2b212c232da798ac6a9746a38765b4099dcff9251490602001610d6f565b5f3381806119f18387611f0e565b91509150611a0183878785611ff0565b8115611aba57305f90815260208190526040902054600c548110801590611a2b5750600d5460ff16155b8015611a3e5750600d54610100900460ff165b8015611a7c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b15611a8c57611a8c600c5461227e565b5f611a978784612521565b9050611aa485308361260c565b611ab38589610c7b848b612ed8565b5050611ac5565b611ac583878761260c565b50600195945050505050565b6005546001600160a01b03163314611afb5760405162461bcd60e51b8152600401610a7b90612e38565b600b8190556040518181527fabeac71da1b5e23c49ce9f7f04cf66b34293f56665d9a80a2e66a1851c2bbe1c90602001610d6f565b6005546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401610a7b90612e38565b600a8190556040518181527ffb1fe1002b7550e87616e67793dbb7d3f437a79c2688c372c66dc170dbcb0efd90602001610d6f565b6005546001600160a01b03163314611bb95760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600f602052604090205460ff16611c2b5760405162461bcd60e51b815260206004820152602260248201527f4163636f756e7420697320616c726561647920696e636c7564656420696e2066604482015261656560f01b6064820152608401610a7b565b6001600160a01b0381165f818152600f6020908152604091829020805460ff1916905590519182527f711fdef8f2d84ec32e12306df0559e86006affdb2b1be5484928b6810406048f9101610d6f565b6005546001600160a01b03163314611ca55760405162461bcd60e51b8152600401610a7b90612e38565b600d805460ff610100808304821615810261ff001990931692909217928390556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15993611cfd9390049091161515815260200190565b60405180910390a1565b6005546001600160a01b03163314611d315760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b038116611d965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7b565b61173e81612923565b6005546001600160a01b03163314611dc95760405162461bcd60e51b8152600401610a7b90612e38565b611dd5888888886115af565b611de184848484611199565b5050505050505050565b6001600160a01b038316611e4d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7b565b6001600160a01b038216611eae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a7b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015611f6957506001600160a01b0383165f908152600f602052604090205460ff16155b15611f7957506001905080611fe9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015611fd257506001600160a01b0384165f908152600f602052604090205460ff16155b15611fe35750600190506002611fe9565b505f9050805b9250929050565b6001600160a01b0384165f908152600e602052604090205460ff16158061202f57506001600160a01b0383165f908152600e602052604090205460ff16155b6120715760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1bd8dadb1a5cdd1959606a1b6044820152606401610a7b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161461215357600a54826120cc856001600160a01b03165f9081526020819052604090205490565b6120d69190612eeb565b10806120f957506001600160a01b0383165f9081526011602052604090205460ff165b6121535760405162461bcd60e51b815260206004820152602560248201527f4578636565647320726563656976657273206d6178696d756d2077616c6c65746044820152642073697a6560d81b6064820152608401610a7b565b80156121ee57600b54821115806121a257506001600160a01b0384165f9081526010602052604090205460ff16806121a257506001600160a01b0383165f9081526010602052604090205460ff165b6121ee5760405162461bcd60e51b815260206004820152601f60248201527f5472616e73616374696f6e206c6172676572207468616e20616c6c6f776564006044820152606401610a7b565b50505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146121ee57818110156122715760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a7b565b6121ee8484848403611deb565b600d805460ff191660011790556012545f9061ffff600160301b8204811691600160201b81048216916122bc91818116916201000090910416612efe565b6122c69190612efe565b6122d09190612efe565b61ffff169050805f036122e35750612514565b6012545f9082906122f89061ffff1685612f20565b6123029190612f4b565b9050612321612312600283612f4b565b61231c9085612ed8565b612974565b60125447905f9061ffff600160301b8204811691600160201b810482169161234c9160029116612f5e565b601254612363919062010000900461ffff16612efe565b61236d9190612efe565b6123779190612efe565b60125461ffff91821692505f91839161239891620100009091041685612f20565b6123a29190612f4b565b6012549091505f9083906123bc9060029061ffff16612f5e565b6123ca9061ffff1686612f20565b6123d49190612f4b565b6012549091505f9084906123f390600160301b900461ffff1687612f20565b6123fd9190612f4b565b9050811561241957612419612413600288612f4b565b83612b2a565b6007546040516001600160a01b039091169084156108fc029085905f818181858888f19350505050158015612450573d5f803e3d5ffd5b506009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612488573d5f803e3d5ffd5b506008546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156124bf573d5f803e3d5ffd5b507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188866124ee60028a612f4b565b6040805193845260208401929092529082015260600160405180910390a1505050505050505b50600d805460ff19169055565b5f80600183600281111561253757612537612f7e565b0361258a5760125461ffff600160301b8204811691600160201b810482169161256b91818116916201000090910416612efe565b6125759190612efe565b61257f9190612efe565b61ffff1690506125ed565b600283600281111561259e5761259e612f7e565b036125ed5760135461ffff600160301b8204811691600160201b81048216916125d291818116916201000090910416612efe565b6125dc9190612efe565b6125e69190612efe565b61ffff1690505b6127106125fa8286612f20565b6126049190612f4b565b949350505050565b6001600160a01b0383166126705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7b565b6001600160a01b0382166126d25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7b565b6001600160a01b0383165f90815260208190526040902054818110156127495760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a7b565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061277f908490612eeb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127cb91815260200190565b60405180910390a36121ee565b6001600160a01b0382166128385760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a7b565b6001600160a01b0382165f90815260208190526040902054818110156128ab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a7b565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906128d9908490612ed8565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106129a7576129a7612f92565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a479190612fa6565b81600181518110612a5a57612a5a612f92565b60200260200101906001600160a01b031690816001600160a01b031681525050612aa5307f000000000000000000000000000000000000000000000000000000000000000084611deb565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612af99085905f90869030904290600401612fc1565b5f604051808303815f87803b158015612b10575f80fd5b505af1158015612b22573d5f803e3d5ffd5b505050505050565b612b55307f000000000000000000000000000000000000000000000000000000000000000084611deb565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612bdb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c009190613032565b5050505050565b6001600160a01b038116811461173e575f80fd5b5f8060408385031215612c2c575f80fd5b8235612c3781612c07565b946020939093013593505050565b5f602080835283518060208501525f5b81811015612c7157858101830151858201604001528201612c55565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f60608486031215612ca3575f80fd5b8335612cae81612c07565b92506020840135612cbe81612c07565b929592945050506040919091013590565b5f60208284031215612cdf575f80fd5b8135612cea81612c07565b9392505050565b5f60208284031215612d01575f80fd5b5035919050565b803561ffff81168114612d19575f80fd5b919050565b5f805f8060808587031215612d31575f80fd5b612d3a85612d08565b9350612d4860208601612d08565b9250612d5660408601612d08565b9150612d6460608601612d08565b905092959194509250565b5f8060408385031215612d80575f80fd5b8235612d8b81612c07565b91506020830135612d9b81612c07565b809150509250929050565b5f805f805f805f80610100898b031215612dbe575f80fd5b612dc789612d08565b9750612dd560208a01612d08565b9650612de360408a01612d08565b9550612df160608a01612d08565b9450612dff60808a01612d08565b9350612e0d60a08a01612d08565b9250612e1b60c08a01612d08565b9150612e2960e08a01612d08565b90509295985092959890939650565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612e7d575f80fd5b81518015158114612cea575f80fd5b600181811c90821680612ea057607f821691505b602082108103612ebe57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b9a57610b9a612ec4565b80820180821115610b9a57610b9a612ec4565b61ffff818116838216019080821115612f1957612f19612ec4565b5092915050565b8082028115828204841417610b9a57610b9a612ec4565b634e487b7160e01b5f52601260045260245ffd5b5f82612f5957612f59612f37565b500490565b5f61ffff80841680612f7257612f72612f37565b92169190910492915050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612fb6575f80fd5b8151612cea81612c07565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156130115784516001600160a01b031683529383019391830191600101612fec565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215613044575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220587426f952b06f34107d8d1c1e931916eea4d11f97a93e97213ec1609943865364736f6c634300081600334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000061cf31986b19910a57eb95ca362c3fe58d85ff240000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e000000000000000000000000000000000000000000000000000000000000000542554c4c59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000542554c4c59000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610310575f3560e01c806372ac2486116101a3578063a0ef91df116100f2578063dd62ed3e11610092578063ea2f0b371161006d578063ea2f0b37146109e0578063eb62b534146109ff578063f2fde38b14610a13578063f562c60014610a32575f80fd5b8063dd62ed3e14610968578063e7873b58146109ac578063ea1644d5146109c1575f80fd5b8063a8602fea116100cd578063a8602fea146108dd578063a9059cbb146108fc578063a9e59da31461091b578063d1d7d7ef1461093a575f80fd5b8063a0ef91df14610897578063a457c2d71461089f578063a4d4620f146108be575f80fd5b806385320beb1161015d5780638f3fa860116101385780638f3fa8601461083057806395d89b41146108455780639d0014b1146108595780639f27b65714610878575f80fd5b806385320beb146107d55780638da5cb5b146107f45780638dc6443914610811575f80fd5b806372ac2486146106fd57806373aa25b41461071c578063768dc7101461073b57806379cc6790146107695780637be85568146107885780637cf14024146107b6575f80fd5b806332a710b91161025f57806349bd5a5e116102195780635bcbe877116101f45780635bcbe877146106775780636adf68181461069657806370a08231146106b5578063715018a6146106e9575f80fd5b806349bd5a5e146106075780634a74bb021461063a5780635b700d9114610658575f80fd5b806332a710b91461052557806339509351146105535780633f33e9091461057257806342966c6814610591578063437823ec146105b057806347062402146105cf575f80fd5b806323b872dd116102ca578063269d1faa116102a5578063269d1faa1461047057806328b13b611461048f5780632b14ca56146104a4578063313ce5671461050a575f80fd5b806323b872dd1461041357806323be39041461043257806325e2eea314610451575f80fd5b80630445b6671461031b57806306b091f91461034357806306fdde0314610364578063095ea7b3146103855780631694505e146103b457806318160ddd146103ff575f80fd5b3661031757005b5f80fd5b348015610326575f80fd5b50610330600c5481565b6040519081526020015b60405180910390f35b34801561034e575f80fd5b5061036261035d366004612c1b565b610a51565b005b34801561036f575f80fd5b50610378610af7565b60405161033a9190612c45565b348015610390575f80fd5b506103a461039f366004612c1b565b610b87565b604051901515815260200161033a565b3480156103bf575f80fd5b506103e77f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161033a565b34801561040a575f80fd5b50600254610330565b34801561041e575f80fd5b506103a461042d366004612c91565b610ba0565b34801561043d575f80fd5b5061036261044c366004612ccf565b610c9f565b34801561045c575f80fd5b5061036261046b366004612ccf565b610d7a565b34801561047b575f80fd5b506007546103e7906001600160a01b031681565b34801561049a575f80fd5b50610330600b5481565b3480156104af575f80fd5b506013546104dc9061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161033a565b348015610515575f80fd5b506040516012815260200161033a565b348015610530575f80fd5b506103a461053f366004612ccf565b60106020525f908152604090205460ff1681565b34801561055e575f80fd5b506103a461056d366004612c1b565b610e5b565b34801561057d575f80fd5b5061036261058c366004612ccf565b610e99565b34801561059c575f80fd5b506103626105ab366004612cf1565b610f8c565b3480156105bb575f80fd5b506103626105ca366004612ccf565b610faf565b3480156105da575f80fd5b506012546104dc9061ffff80821691620100008104821691600160201b8204811691600160301b90041684565b348015610612575f80fd5b506103e77f000000000000000000000000a286557b7889269099e6a8d506f41851c2d4bb4c81565b348015610645575f80fd5b50600d546103a490610100900460ff1681565b348015610663575f80fd5b50610362610672366004612ccf565b6110a0565b348015610682575f80fd5b50610362610691366004612d1e565b611199565b3480156106a1575f80fd5b506103626106b0366004612ccf565b611287565b3480156106c0575f80fd5b506103306106cf366004612ccf565b6001600160a01b03165f9081526020819052604090205490565b3480156106f4575f80fd5b5061036261137f565b348015610708575f80fd5b50610362610717366004612ccf565b6113b4565b348015610727575f80fd5b506009546103e7906001600160a01b031681565b348015610746575f80fd5b506103a4610755366004612ccf565b600f6020525f908152604090205460ff1681565b348015610774575f80fd5b50610362610783366004612c1b565b611482565b348015610793575f80fd5b506103a46107a2366004612ccf565b600e6020525f908152604090205460ff1681565b3480156107c1575f80fd5b506103626107d0366004612ccf565b6114b1565b3480156107e0575f80fd5b506008546103e7906001600160a01b031681565b3480156107ff575f80fd5b506005546001600160a01b03166103e7565b34801561081c575f80fd5b5061036261082b366004612d1e565b6115af565b34801561083b575f80fd5b50610330600a5481565b348015610850575f80fd5b5061037861169d565b348015610864575f80fd5b50610362610873366004612cf1565b6116ac565b348015610883575f80fd5b50610362610892366004612cf1565b61170b565b610362611741565b3480156108aa575f80fd5b506103a46108b9366004612c1b565b611794565b3480156108c9575f80fd5b506103626108d8366004612ccf565b611830565b3480156108e8575f80fd5b506103626108f7366004612ccf565b611915565b348015610907575f80fd5b506103a4610916366004612c1b565b6119e3565b348015610926575f80fd5b50610362610935366004612cf1565b611ad1565b348015610945575f80fd5b506103a4610954366004612ccf565b60116020525f908152604090205460ff1681565b348015610973575f80fd5b50610330610982366004612d6f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156109b7575f80fd5b5061033060065481565b3480156109cc575f80fd5b506103626109db366004612cf1565b611b30565b3480156109eb575f80fd5b506103626109fa366004612ccf565b611b8f565b348015610a0a575f80fd5b50610362611c7b565b348015610a1e575f80fd5b50610362610a2d366004612ccf565b611d07565b348015610a3d575f80fd5b50610362610a4c366004612da6565b611d9f565b6005546001600160a01b03163314610a845760405162461bcd60e51b8152600401610a7b90612e38565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af29190612e6d565b505050565b606060038054610b0690612e8c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3290612e8c565b8015610b7d5780601f10610b5457610100808354040283529160200191610b7d565b820191905f5260205f20905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b5f33610b94818585611deb565b60019150505b92915050565b5f338180610bae8787611f0e565b91509150610bbe87878785611ff0565b610bc98784876121f4565b8115610c8757305f90815260208190526040902054600c548110801590610bf35750600d5460ff16155b8015610c065750600d54610100900460ff165b8015610c4457507f000000000000000000000000a286557b7889269099e6a8d506f41851c2d4bb4c6001600160a01b0316886001600160a01b031614155b15610c5457610c54600c5461227e565b5f610c5f8784612521565b9050610c6c89308361260c565b610c808989610c7b848b612ed8565b61260c565b5050610c92565b610c9287878761260c565b5060019695505050505050565b6005546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b038116610d1f5760405162461bcd60e51b815260206004820152601a60248201527f42756c6c792077616c6c65742063616e6e6f74206265203078300000000000006044820152606401610a7b565b600980546001600160a01b0319166001600160a01b0383811691909117909155600754604051911681527fcefb7ff3c0280d7758c89c795887115f275ec7b8728b203f2428d74c703fe6fc906020015b60405180910390a150565b6005546001600160a01b03163314610da45760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600e602052604090205460ff16610e0b5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c6f636b6c69737465640000000000006044820152606401610a7b565b6001600160a01b0381165f818152600e6020908152604091829020805460ff1916905590519182527f37fc2206e80f9f32817bca5bf743642024905b0e79312774a6b76d750337014e9101610d6f565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190610b949082908690610e94908790612eeb565b611deb565b6005546001600160a01b03163314610ec35760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526011602052604090205460ff16610f3c5760405162461bcd60e51b815260206004820152602960248201527f4163636f756e7420697320616c726561647920696e636c7564656420696e206d604482015268185e081dd85b1b195d60ba1b6064820152608401610a7b565b6001600160a01b0381165f81815260116020908152604091829020805460ff1916905590519182527f0146ecf0f3e959e006d0380e7d8a829b041286e7cdb8fe2c017a9374ac9ba9bc9101610d6f565b610f9633826127d8565b8060065f828254610fa79190612eeb565b909155505050565b6005546001600160a01b03163314610fd95760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600f602052604090205460ff161561104d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d6044820152632066656560e01b6064820152608401610a7b565b6001600160a01b0381165f818152600f6020908152604091829020805460ff1916600117905590519182527f85ecafd7b8cfcceb72ea6978547a39f89631bf423eea19a63ce8d3881ec51e039101610d6f565b6005546001600160a01b031633146110ca5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526011602052604090205460ff16156111465760405162461bcd60e51b815260206004820152602b60248201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d60448201526a081b585e081dd85b1b195d60aa1b6064820152608401610a7b565b6001600160a01b0381165f81815260116020908152604091829020805460ff1916600117905590519182527f7d99f9a4158245b2d0ffb50768db33ed6d5e4146f7e27db2b1c87133148b907a9101610d6f565b6005546001600160a01b031633146111c35760405162461bcd60e51b8152600401610a7b90612e38565b61271081836111d28688612efe565b6111dc9190612efe565b6111e69190612efe565b61ffff161061122f5760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206665652073747275637475726560581b6044820152606401610a7b565b6013805461ffff928316600160301b0267ffff00000000000019948416600160201b0265ffff0000ffff1996851662010000029690961665ffffffffffff199092169190911795909216949094179290921716179055565b6005546001600160a01b031633146112b15760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526010602052604090205460ff1661132f5760405162461bcd60e51b815260206004820152602e60248201527f4163636f756e7420697320616c726561647920696e636c7564656420696e206d60448201526d30bc103a3930b739b0b1ba34b7b760911b6064820152608401610a7b565b6001600160a01b0381165f81815260106020908152604091829020805460ff1916905590519182527f628f9fc26f194733f0575c94bd0ac205c2c61093f83b9ed913762ca6a5142efd9101610d6f565b6005546001600160a01b031633146113a95760405162461bcd60e51b8152600401610a7b90612e38565b6113b25f612923565b565b6005546001600160a01b031633146113de5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381166114345760405162461bcd60e51b815260206004820181905260248201527f446576656c6f706d656e742077616c6c65742063616e6e6f74206265203078306044820152606401610a7b565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f3de80392900a85a257c33c60def3bf626743ce3bd0221318559b8bfae76b1fb890602001610d6f565b61148d8233836121f4565b61149782826127d8565b8060065f8282546114a89190612eeb565b90915550505050565b6005546001600160a01b031633146114db5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f9081526010602052604090205460ff161561155c5760405162461bcd60e51b815260206004820152603060248201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d60448201526f1036b0bc103a3930b739b0b1ba34b7b760811b6064820152608401610a7b565b6001600160a01b0381165f81815260106020908152604091829020805460ff1916600117905590519182527f926ada6c4eef2af9b9880421dcf6e88d1a21f645e07a0b0c219347090ff95bb59101610d6f565b6005546001600160a01b031633146115d95760405162461bcd60e51b8152600401610a7b90612e38565b61271081836115e88688612efe565b6115f29190612efe565b6115fc9190612efe565b61ffff16106116455760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206665652073747275637475726560581b6044820152606401610a7b565b6012805461ffff928316600160301b0267ffff00000000000019948416600160201b0265ffff0000ffff1996851662010000029690961665ffffffffffff199092169190911795909216949094179290921716179055565b606060048054610b0690612e8c565b6005546001600160a01b031633146116d65760405162461bcd60e51b8152600401610a7b90612e38565b600c8190556040518181527f674515d9dd103f6dd90c092a960b3a3905ecfc07da656d2ede6512afbffa091990602001610d6f565b6005546001600160a01b031633146117355760405162461bcd60e51b8152600401610a7b90612e38565b61173e8161227e565b50565b6005546001600160a01b0316331461176b5760405162461bcd60e51b8152600401610a7b90612e38565b60405133904780156108fc02915f818181858888f1935050505015801561173e573d5f803e3d5ffd5b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190838110156118185760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a7b565b6118258286868403611deb565b506001949350505050565b6005546001600160a01b0316331461185a5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600e602052604090205460ff16156118c25760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c6f636b6c697374656400006044820152606401610a7b565b6001600160a01b0381165f818152600e6020908152604091829020805460ff1916600117905590519182527f13d669a4a4b3d301172e68e17e2c7a94051a3ed56d9bce740d781805e02e25639101610d6f565b6005546001600160a01b0316331461193f5760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381166119955760405162461bcd60e51b815260206004820152601d60248201527f54726561737572792077616c6c65742063616e6e6f74206265203078300000006044820152606401610a7b565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fa11ce8775af13e1c057faa2b212c232da798ac6a9746a38765b4099dcff9251490602001610d6f565b5f3381806119f18387611f0e565b91509150611a0183878785611ff0565b8115611aba57305f90815260208190526040902054600c548110801590611a2b5750600d5460ff16155b8015611a3e5750600d54610100900460ff165b8015611a7c57507f000000000000000000000000a286557b7889269099e6a8d506f41851c2d4bb4c6001600160a01b0316846001600160a01b031614155b15611a8c57611a8c600c5461227e565b5f611a978784612521565b9050611aa485308361260c565b611ab38589610c7b848b612ed8565b5050611ac5565b611ac583878761260c565b50600195945050505050565b6005546001600160a01b03163314611afb5760405162461bcd60e51b8152600401610a7b90612e38565b600b8190556040518181527fabeac71da1b5e23c49ce9f7f04cf66b34293f56665d9a80a2e66a1851c2bbe1c90602001610d6f565b6005546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401610a7b90612e38565b600a8190556040518181527ffb1fe1002b7550e87616e67793dbb7d3f437a79c2688c372c66dc170dbcb0efd90602001610d6f565b6005546001600160a01b03163314611bb95760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b0381165f908152600f602052604090205460ff16611c2b5760405162461bcd60e51b815260206004820152602260248201527f4163636f756e7420697320616c726561647920696e636c7564656420696e2066604482015261656560f01b6064820152608401610a7b565b6001600160a01b0381165f818152600f6020908152604091829020805460ff1916905590519182527f711fdef8f2d84ec32e12306df0559e86006affdb2b1be5484928b6810406048f9101610d6f565b6005546001600160a01b03163314611ca55760405162461bcd60e51b8152600401610a7b90612e38565b600d805460ff610100808304821615810261ff001990931692909217928390556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15993611cfd9390049091161515815260200190565b60405180910390a1565b6005546001600160a01b03163314611d315760405162461bcd60e51b8152600401610a7b90612e38565b6001600160a01b038116611d965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7b565b61173e81612923565b6005546001600160a01b03163314611dc95760405162461bcd60e51b8152600401610a7b90612e38565b611dd5888888886115af565b611de184848484611199565b5050505050505050565b6001600160a01b038316611e4d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7b565b6001600160a01b038216611eae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a7b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f807f000000000000000000000000a286557b7889269099e6a8d506f41851c2d4bb4c6001600160a01b0316846001600160a01b0316148015611f6957506001600160a01b0383165f908152600f602052604090205460ff16155b15611f7957506001905080611fe9565b7f000000000000000000000000a286557b7889269099e6a8d506f41851c2d4bb4c6001600160a01b0316836001600160a01b0316148015611fd257506001600160a01b0384165f908152600f602052604090205460ff16155b15611fe35750600190506002611fe9565b505f9050805b9250929050565b6001600160a01b0384165f908152600e602052604090205460ff16158061202f57506001600160a01b0383165f908152600e602052604090205460ff16155b6120715760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1bd8dadb1a5cdd1959606a1b6044820152606401610a7b565b7f000000000000000000000000a286557b7889269099e6a8d506f41851c2d4bb4c6001600160a01b0316836001600160a01b03161461215357600a54826120cc856001600160a01b03165f9081526020819052604090205490565b6120d69190612eeb565b10806120f957506001600160a01b0383165f9081526011602052604090205460ff165b6121535760405162461bcd60e51b815260206004820152602560248201527f4578636565647320726563656976657273206d6178696d756d2077616c6c65746044820152642073697a6560d81b6064820152608401610a7b565b80156121ee57600b54821115806121a257506001600160a01b0384165f9081526010602052604090205460ff16806121a257506001600160a01b0383165f9081526010602052604090205460ff165b6121ee5760405162461bcd60e51b815260206004820152601f60248201527f5472616e73616374696f6e206c6172676572207468616e20616c6c6f776564006044820152606401610a7b565b50505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146121ee57818110156122715760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a7b565b6121ee8484848403611deb565b600d805460ff191660011790556012545f9061ffff600160301b8204811691600160201b81048216916122bc91818116916201000090910416612efe565b6122c69190612efe565b6122d09190612efe565b61ffff169050805f036122e35750612514565b6012545f9082906122f89061ffff1685612f20565b6123029190612f4b565b9050612321612312600283612f4b565b61231c9085612ed8565b612974565b60125447905f9061ffff600160301b8204811691600160201b810482169161234c9160029116612f5e565b601254612363919062010000900461ffff16612efe565b61236d9190612efe565b6123779190612efe565b60125461ffff91821692505f91839161239891620100009091041685612f20565b6123a29190612f4b565b6012549091505f9083906123bc9060029061ffff16612f5e565b6123ca9061ffff1686612f20565b6123d49190612f4b565b6012549091505f9084906123f390600160301b900461ffff1687612f20565b6123fd9190612f4b565b9050811561241957612419612413600288612f4b565b83612b2a565b6007546040516001600160a01b039091169084156108fc029085905f818181858888f19350505050158015612450573d5f803e3d5ffd5b506009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612488573d5f803e3d5ffd5b506008546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156124bf573d5f803e3d5ffd5b507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188866124ee60028a612f4b565b6040805193845260208401929092529082015260600160405180910390a1505050505050505b50600d805460ff19169055565b5f80600183600281111561253757612537612f7e565b0361258a5760125461ffff600160301b8204811691600160201b810482169161256b91818116916201000090910416612efe565b6125759190612efe565b61257f9190612efe565b61ffff1690506125ed565b600283600281111561259e5761259e612f7e565b036125ed5760135461ffff600160301b8204811691600160201b81048216916125d291818116916201000090910416612efe565b6125dc9190612efe565b6125e69190612efe565b61ffff1690505b6127106125fa8286612f20565b6126049190612f4b565b949350505050565b6001600160a01b0383166126705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7b565b6001600160a01b0382166126d25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7b565b6001600160a01b0383165f90815260208190526040902054818110156127495760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a7b565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061277f908490612eeb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127cb91815260200190565b60405180910390a36121ee565b6001600160a01b0382166128385760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a7b565b6001600160a01b0382165f90815260208190526040902054818110156128ab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a7b565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906128d9908490612ed8565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106129a7576129a7612f92565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a479190612fa6565b81600181518110612a5a57612a5a612f92565b60200260200101906001600160a01b031690816001600160a01b031681525050612aa5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611deb565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612af99085905f90869030904290600401612fc1565b5f604051808303815f87803b158015612b10575f80fd5b505af1158015612b22573d5f803e3d5ffd5b505050505050565b612b55307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611deb565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612bdb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c009190613032565b5050505050565b6001600160a01b038116811461173e575f80fd5b5f8060408385031215612c2c575f80fd5b8235612c3781612c07565b946020939093013593505050565b5f602080835283518060208501525f5b81811015612c7157858101830151858201604001528201612c55565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f60608486031215612ca3575f80fd5b8335612cae81612c07565b92506020840135612cbe81612c07565b929592945050506040919091013590565b5f60208284031215612cdf575f80fd5b8135612cea81612c07565b9392505050565b5f60208284031215612d01575f80fd5b5035919050565b803561ffff81168114612d19575f80fd5b919050565b5f805f8060808587031215612d31575f80fd5b612d3a85612d08565b9350612d4860208601612d08565b9250612d5660408601612d08565b9150612d6460608601612d08565b905092959194509250565b5f8060408385031215612d80575f80fd5b8235612d8b81612c07565b91506020830135612d9b81612c07565b809150509250929050565b5f805f805f805f80610100898b031215612dbe575f80fd5b612dc789612d08565b9750612dd560208a01612d08565b9650612de360408a01612d08565b9550612df160608a01612d08565b9450612dff60808a01612d08565b9350612e0d60a08a01612d08565b9250612e1b60c08a01612d08565b9150612e2960e08a01612d08565b90509295985092959890939650565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612e7d575f80fd5b81518015158114612cea575f80fd5b600181811c90821680612ea057607f821691505b602082108103612ebe57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b9a57610b9a612ec4565b80820180821115610b9a57610b9a612ec4565b61ffff818116838216019080821115612f1957612f19612ec4565b5092915050565b8082028115828204841417610b9a57610b9a612ec4565b634e487b7160e01b5f52601260045260245ffd5b5f82612f5957612f59612f37565b500490565b5f61ffff80841680612f7257612f72612f37565b92169190910492915050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612fb6575f80fd5b8151612cea81612c07565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156130115784516001600160a01b031683529383019391830191600101612fec565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215613044575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220587426f952b06f34107d8d1c1e931916eea4d11f97a93e97213ec1609943865364736f6c63430008160033

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

00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000061cf31986b19910a57eb95ca362c3fe58d85ff240000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e000000000000000000000000000000000000000000000000000000000000000542554c4c59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000542554c4c59000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name__ (string): BULLY
Arg [1] : symbol__ (string): BULLY
Arg [2] : newOwner (address): 0x61Cf31986b19910A57eb95Ca362C3fe58d85ff24
Arg [3] : treasury (address): 0x7b515Fa852BdF3B039C96ad2014285f65D0e9b6E
Arg [4] : development (address): 0x7b515Fa852BdF3B039C96ad2014285f65D0e9b6E
Arg [5] : bully (address): 0x7b515Fa852BdF3B039C96ad2014285f65D0e9b6E

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 00000000000000000000000061cf31986b19910a57eb95ca362c3fe58d85ff24
Arg [3] : 0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e
Arg [4] : 0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e
Arg [5] : 0000000000000000000000007b515fa852bdf3b039c96ad2014285f65d0e9b6e
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 42554c4c59000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [9] : 42554c4c59000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

30068:15793:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30520:62;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;30520:62:0;;;;;;;;45686:172;;;;;;;;;;-1:-1:-1;45686:172:0;;;;;:::i;:::-;;:::i;:::-;;17728:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20079:201::-;;;;;;;;;;-1:-1:-1;20079:201:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;20079:201:0;1205:187:1;30600:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;30600:51:0;1397:229:1;18848:108:0;;;;;;;;;;-1:-1:-1;18936:12:0;;18848:108;;34926:974;;;;;;;;;;-1:-1:-1;34926:974:0;;;;;:::i;:::-;;:::i;40797:226::-;;;;;;;;;;-1:-1:-1;40797:226:0;;;;;:::i;:::-;;:::i;43096:247::-;;;;;;;;;;-1:-1:-1;43096:247:0;;;;;:::i;:::-;;:::i;30224:38::-;;;;;;;;;;-1:-1:-1;30224:38:0;;;;-1:-1:-1;;;;;30224:38:0;;;30438:67;;;;;;;;;;;;;;;;31384:22;;;;;;;;;;-1:-1:-1;31384:22:0;;;;;;;;;;;;;;;-1:-1:-1;;;31384:22:0;;;;;-1:-1:-1;;;31384:22:0;;;;;;;;;2801:6:1;2834:15;;;2816:34;;2886:15;;;2881:2;2866:18;;2859:43;2938:15;;;2918:18;;;2911:43;;;;2990:15;;;2985:2;2970:18;;2963:43;2778:3;2763:19;31384:22:0;2568:444:1;18690:93:0;;;;;;;;;;-1:-1:-1;18690:93:0;;18773:2;3159:36:1;;3147:2;3132:18;18690:93:0;3017:184:1;30897:61:0;;;;;;;;;;-1:-1:-1;30897:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21564:240;;;;;;;;;;-1:-1:-1;21564:240:0;;;;;:::i;:::-;;:::i;44922:305::-;;;;;;;;;;-1:-1:-1;44922:305:0;;;;;:::i;:::-;;:::i;35908:125::-;;;;;;;;;;-1:-1:-1;35908:125:0;;;;;:::i;:::-;;:::i;43351:280::-;;;;;;;;;;-1:-1:-1;43351:280:0;;;;;:::i;:::-;;:::i;31357:20::-;;;;;;;;;;-1:-1:-1;31357:20:0;;;;;;;;;;;;;;;-1:-1:-1;;;31357:20:0;;;;;-1:-1:-1;;;31357:20:0;;;;;30658:38;;;;;;;;;;;;;;;30733:40;;;;;;;;;;-1:-1:-1;30733:40:0;;;;;;;;;;;43983:311;;;;;;;;;;-1:-1:-1;43983:311:0;;;;;:::i;:::-;;:::i;41031:417::-;;;;;;;;;;-1:-1:-1;41031:417:0;;;;;:::i;:::-;;:::i;44584:330::-;;;;;;;;;;-1:-1:-1;44584:330:0;;;;;:::i;:::-;;:::i;19019:127::-;;;;;;;;;;-1:-1:-1;19019:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;19120:18:0;19093:7;19120:18;;;;;;;;;;;;19019:127;11100:103;;;;;;;;;;;;;:::i;40518:271::-;;;;;;;;;;-1:-1:-1;40518:271:0;;;;;:::i;:::-;;:::i;30317:35::-;;;;;;;;;;-1:-1:-1;30317:35:0;;;;-1:-1:-1;;;;;30317:35:0;;;30840:50;;;;;;;;;;-1:-1:-1;30840:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36041:198;;;;;;;;;;-1:-1:-1;36041:198:0;;;;;:::i;:::-;;:::i;30782:49::-;;;;;;;;;;-1:-1:-1;30782:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;43639:336;;;;;;;;;;-1:-1:-1;43639:336:0;;;;;:::i;:::-;;:::i;30269:41::-;;;;;;;;;;-1:-1:-1;30269:41:0;;;;-1:-1:-1;;;;;30269:41:0;;;10449:87;;;;;;;;;;-1:-1:-1;10522:6:0;;-1:-1:-1;;;;;10522:6:0;10449:87;;41456:412;;;;;;;;;;-1:-1:-1;41456:412:0;;;;;:::i;:::-;;:::i;30361:62::-;;;;;;;;;;;;;;;;17947:104;;;;;;;;;;;;;:::i;42308:176::-;;;;;;;;;;-1:-1:-1;42308:176:0;;;;;:::i;:::-;;:::i;45433:115::-;;;;;;;;;;-1:-1:-1;45433:115:0;;;;;:::i;:::-;;:::i;45558:120::-;;;:::i;22307:438::-;;;;;;;;;;-1:-1:-1;22307:438:0;;;;;:::i;:::-;;:::i;42846:242::-;;;;;;;;;;-1:-1:-1;42846:242:0;;;;;:::i;:::-;;:::i;40263:247::-;;;;;;;;;;-1:-1:-1;40263:247:0;;;;;:::i;:::-;;:::i;34004:914::-;;;;;;;;;;-1:-1:-1;34004:914:0;;;;;:::i;:::-;;:::i;42492:179::-;;;;;;;;;;-1:-1:-1;42492:179:0;;;;;:::i;:::-;;:::i;30965:56::-;;;;;;;;;;-1:-1:-1;30965:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19608:151;;;;;;;;;;-1:-1:-1;19608:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;19724:18:0;;;19697:7;19724:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19608:151;30188:27;;;;;;;;;;;;;;;;42679:159;;;;;;;;;;-1:-1:-1;42679:159:0;;;;;:::i;:::-;;:::i;44302:274::-;;;;;;;;;;-1:-1:-1;44302:274:0;;;;;:::i;:::-;;:::i;45235:190::-;;;;;;;;;;;;;:::i;11358:201::-;;;;;;;;;;-1:-1:-1;11358:201:0;;;;;:::i;:::-;;:::i;41876:424::-;;;;;;;;;;-1:-1:-1;41876:424:0;;;;;:::i;:::-;;:::i;45686:172::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;;;;;;;;;45801:49:::1;::::0;-1:-1:-1;;;45801:49:0;;45830:10:::1;45801:49;::::0;::::1;5795:51:1::0;5862:18;;;5855:34;;;-1:-1:-1;;;;;45801:28:0;::::1;::::0;::::1;::::0;5768:18:1;;45801:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45686:172:::0;;:::o;17728:100::-;17782:13;17815:5;17808:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17728:100;:::o;20079:201::-;20162:4;9236:10;20218:32;9236:10;20234:7;20243:6;20218:8;:32::i;:::-;20268:4;20261:11;;;20079:201;;;;;:::o;34926:974::-;35049:4;9236:10;35049:4;;35143:26;35160:4;35166:2;35143:16;:26::i;:::-;35109:60;;;;35180:47;35201:4;35207:2;35211:6;35219:7;35180:20;:47::i;:::-;35240:38;35256:4;35262:7;35271:6;35240:15;:38::i;:::-;35295:7;35291:578;;;35363:4;35319:23;19120:18;;;;;;;;;;;35425:13;;35406:32;;;;;:70;;-1:-1:-1;35460:16:0;;;;35459:17;35406:70;:112;;;;-1:-1:-1;35497:21:0;;;;;;;35406:112;:154;;;;;35547:13;-1:-1:-1;;;;;35539:21:0;:4;-1:-1:-1;;;;;35539:21:0;;;35406:154;35384:256;;;35595:29;35610:13;;35595:14;:29::i;:::-;35656:11;35670:29;35683:6;35691:7;35670:12;:29::i;:::-;35656:43;;35714:35;35724:4;35738;35745:3;35714:9;:35::i;:::-;35764:33;35774:4;35780:2;35784:12;35793:3;35784:6;:12;:::i;:::-;35764:9;:33::i;:::-;35304:505;;35291:578;;;35830:27;35840:4;35846:2;35850:6;35830:9;:27::i;:::-;-1:-1:-1;35888:4:0;;34926:974;-1:-1:-1;;;;;;34926:974:0:o;40797:226::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40874:19:0;::::1;40866:58;;;::::0;-1:-1:-1;;;40866:58:0;;7034:2:1;40866:58:0::1;::::0;::::1;7016:21:1::0;7073:2;7053:18;;;7046:30;7112:28;7092:18;;;7085:56;7158:18;;40866:58:0::1;6832:350:1::0;40866:58:0::1;40935:12;:29:::0;;-1:-1:-1;;;;;;40935:29:0::1;-1:-1:-1::0;;;;;40935:29:0;;::::1;::::0;;;::::1;::::0;;;40999:15:::1;::::0;40980:35:::1;::::0;40999:15;::::1;1569:51:1::0;;40980:35:0::1;::::0;1557:2:1;1542:18;40980:35:0::1;;;;;;;;40797:226:::0;:::o;43096:247::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43183:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;43175:65;;;::::0;-1:-1:-1;;;43175:65:0;;7605:2:1;43175:65:0::1;::::0;::::1;7587:21:1::0;7644:2;7624:18;;;7617:30;7683:28;7663:18;;;7656:56;7729:18;;43175:65:0::1;7403:350:1::0;43175:65:0::1;-1:-1:-1::0;;;;;43251:26:0;::::1;43280:5;43251:26:::0;;;:17:::1;:26;::::0;;;;;;;;:34;;-1:-1:-1;;43251:34:0::1;::::0;;43303:32;;1569:51:1;;;43303:32:0::1;::::0;1542:18:1;43303:32:0::1;1397:229:1::0;21564:240:0;9236:10;21652:4;21733:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;21733:27:0;;;;;;;;;;21652:4;;9236:10;21708:66;;9236:10;;21733:27;;:40;;21763:10;;21733:40;:::i;:::-;21708:8;:66::i;44922:305::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45019:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;::::1;;44997:124;;;::::0;-1:-1:-1;;;44997:124:0;;8090:2:1;44997:124:0::1;::::0;::::1;8072:21:1::0;8129:2;8109:18;;;8102:30;8168:34;8148:18;;;8141:62;-1:-1:-1;;;8219:18:1;;;8212:39;8268:19;;44997:124:0::1;7888:405:1::0;44997:124:0::1;-1:-1:-1::0;;;;;45132:33:0;::::1;45168:5;45132:33:::0;;;:24:::1;:33;::::0;;;;;;;;:41;;-1:-1:-1;;45132:41:0::1;::::0;;45191:28;;1569:51:1;;;45191:28:0::1;::::0;1542:18:1;45191:28:0::1;1397:229:1::0;35908:125:0;35965:27;9236:10;35985:6;35965:5;:27::i;:::-;36019:6;36003:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;35908:125:0:o;43351:280::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43445:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;43444:28;43422:114;;;::::0;-1:-1:-1;;;43422:114:0;;8500:2:1;43422:114:0::1;::::0;::::1;8482:21:1::0;8539:2;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;-1:-1:-1;;;8629:18:1;;;8622:34;8673:19;;43422:114:0::1;8298:400:1::0;43422:114:0::1;-1:-1:-1::0;;;;;43547:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;43547:34:0::1;43577:4;43547:34;::::0;;43599:24;;1569:51:1;;;43599:24:0::1;::::0;1542:18:1;43599:24:0::1;1397:229:1::0;43983:311:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44083:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;::::1;;44082:34;44060:127;;;::::0;-1:-1:-1;;;44060:127:0;;8905:2:1;44060:127:0::1;::::0;::::1;8887:21:1::0;8944:2;8924:18;;;8917:30;8983:34;8963:18;;;8956:62;-1:-1:-1;;;9034:18:1;;;9027:41;9085:19;;44060:127:0::1;8703:407:1::0;44060:127:0::1;-1:-1:-1::0;;;;;44198:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;;;;:40;;-1:-1:-1;;44198:40:0::1;44234:4;44198:40;::::0;;44256:30;;1569:51:1;;;44256:30:0::1;::::0;1542:18:1;44256:30:0::1;1397:229:1::0;41031:417:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;31444:5:::1;41234::::0;41228:3;41205:20:::1;41217:8:::0;41205:9;:20:::1;:::i;:::-;:26;;;;:::i;:::-;:34;;;;:::i;:::-;:46;;;41183:117;;;::::0;-1:-1:-1;;;41183:117:0;;9490:2:1;41183:117:0::1;::::0;::::1;9472:21:1::0;9529:2;9509:18;;;9502:30;-1:-1:-1;;;9548:18:1;;;9541:51;9609:18;;41183:117:0::1;9288:345:1::0;41183:117:0::1;41313:7;:27:::0;;::::1;41419:21:::0;;::::1;-1:-1:-1::0;;;41419:21:0::1;-1:-1:-1::0;;41391:17:0;;::::1;-1:-1:-1::0;;;41391:17:0::1;-1:-1:-1::0;;41313:27:0;;::::1;::::0;::::1;41391:17:::0;;;;-1:-1:-1;;41391:17:0;;;;;;;41351:29;;;::::1;41391:17:::0;;;;;;;::::1;41419:21;;::::0;;41031:417::o;44584:330::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44686:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;::::1;;44664:134;;;::::0;-1:-1:-1;;;44664:134:0;;9840:2:1;44664:134:0::1;::::0;::::1;9822:21:1::0;9879:2;9859:18;;;9852:30;9918:34;9898:18;;;9891:62;-1:-1:-1;;;9969:18:1;;;9962:44;10023:19;;44664:134:0::1;9638:410:1::0;44664:134:0::1;-1:-1:-1::0;;;;;44809:38:0;::::1;44850:5;44809:38:::0;;;:29:::1;:38;::::0;;;;;;;;:46;;-1:-1:-1;;44809:46:0::1;::::0;;44873:33;;1569:51:1;;;44873:33:0::1;::::0;1542:18:1;44873:33:0::1;1397:229:1::0;11100:103:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;11165:30:::1;11192:1;11165:18;:30::i;:::-;11100:103::o:0;40518:271::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40607:25:0;::::1;40599:70;;;::::0;-1:-1:-1;;;40599:70:0;;10255:2:1;40599:70:0::1;::::0;::::1;10237:21:1::0;;;10274:18;;;10267:30;10333:34;10313:18;;;10306:62;10385:18;;40599:70:0::1;10053:356:1::0;40599:70:0::1;40680:18;:41:::0;;-1:-1:-1;;;;;;40680:41:0::1;-1:-1:-1::0;;;;;40680:41:0;::::1;::::0;;::::1;::::0;;;40737:44:::1;::::0;1569:51:1;;;40737:44:0::1;::::0;1557:2:1;1542:18;40737:44:0::1;1397:229:1::0;36041:198:0;36119:46;36135:7;9236:10;36158:6;36119:15;:46::i;:::-;36176:22;36182:7;36191:6;36176:5;:22::i;:::-;36225:6;36209:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;36041:198:0:o;43639:336::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43744:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;::::1;;43743:39;43721:137;;;::::0;-1:-1:-1;;;43721:137:0;;10616:2:1;43721:137:0::1;::::0;::::1;10598:21:1::0;10655:2;10635:18;;;10628:30;10694:34;10674:18;;;10667:62;-1:-1:-1;;;10745:18:1;;;10738:46;10801:19;;43721:137:0::1;10414:412:1::0;43721:137:0::1;-1:-1:-1::0;;;;;43869:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:45;;-1:-1:-1;;43869:45:0::1;43910:4;43869:45;::::0;;43932:35;;1569:51:1;;;43932:35:0::1;::::0;1542:18:1;43932:35:0::1;1397:229:1::0;41456:412:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;31444:5:::1;41658::::0;41652:3;41629:20:::1;41641:8:::0;41629:9;:20:::1;:::i;:::-;:26;;;;:::i;:::-;:34;;;;:::i;:::-;:46;;;41607:117;;;::::0;-1:-1:-1;;;41607:117:0;;9490:2:1;41607:117:0::1;::::0;::::1;9472:21:1::0;9529:2;9509:18;;;9502:30;-1:-1:-1;;;9548:18:1;;;9541:51;9609:18;;41607:117:0::1;9288:345:1::0;41607:117:0::1;41737:6;:26:::0;;::::1;41840:20:::0;;::::1;-1:-1:-1::0;;;41840:20:0::1;-1:-1:-1::0;;41813:16:0;;::::1;-1:-1:-1::0;;;41813:16:0::1;-1:-1:-1::0;;41737:26:0;;::::1;::::0;::::1;41813:16:::0;;;;-1:-1:-1;;41813:16:0;;;;;;;41774:28;;;::::1;41813:16:::0;;;;;;;::::1;41840:20;;::::0;;41456:412::o;17947:104::-;18003:13;18036:7;18029:14;;;;;:::i;42308:176::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;42390:13:::1;:32:::0;;;42438:38:::1;::::0;160:25:1;;;42438:38:0::1;::::0;148:2:1;133:18;42438:38:0::1;14:177:1::0;45433:115:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;45513:27:::1;45528:11;45513:14;:27::i;:::-;45433:115:::0;:::o;45558:120::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;45619:51:::1;::::0;45627:10:::1;::::0;45648:21:::1;45619:51:::0;::::1;;;::::0;::::1;::::0;;;45648:21;45627:10;45619:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;22307:438:::0;9236:10;22400:4;22483:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;22483:27:0;;;;;;;;;;22400:4;;9236:10;22529:35;;;;22521:85;;;;-1:-1:-1;;;22521:85:0;;11033:2:1;22521:85:0;;;11015:21:1;11072:2;11052:18;;;11045:30;11111:34;11091:18;;;11084:62;-1:-1:-1;;;11162:18:1;;;11155:35;11207:19;;22521:85:0;10831:401:1;22521:85:0;22642:60;22651:5;22658:7;22686:15;22667:16;:34;22642:8;:60::i;:::-;-1:-1:-1;22733:4:0;;22307:438;-1:-1:-1;;;;22307:438:0:o;42846:242::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42929:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;42928:27;42920:70;;;::::0;-1:-1:-1;;;42920:70:0;;11439:2:1;42920:70:0::1;::::0;::::1;11421:21:1::0;11478:2;11458:18;;;11451:30;11517:32;11497:18;;;11490:60;11567:18;;42920:70:0::1;11237:354:1::0;42920:70:0::1;-1:-1:-1::0;;;;;43001:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;;:33;;-1:-1:-1;;43001:33:0::1;43030:4;43001:33;::::0;;43052:28;;1569:51:1;;;43052:28:0::1;::::0;1542:18:1;43052:28:0::1;1397:229:1::0;40263:247:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40346:22:0;::::1;40338:64;;;::::0;-1:-1:-1;;;40338:64:0;;11798:2:1;40338:64:0::1;::::0;::::1;11780:21:1::0;11837:2;11817:18;;;11810:30;11876:31;11856:18;;;11849:59;11925:18;;40338:64:0::1;11596:353:1::0;40338:64:0::1;40413:15;:35:::0;;-1:-1:-1;;;;;;40413:35:0::1;-1:-1:-1::0;;;;;40413:35:0;::::1;::::0;;::::1;::::0;;;40464:38:::1;::::0;1569:51:1;;;40464:38:0::1;::::0;1557:2:1;1542:18;40464:38:0::1;1397:229:1::0;34004:914:0;34102:4;9236:10;34102:4;;34198:28;9236:10;34223:2;34198:16;:28::i;:::-;34164:62;;;;34239:49;34260:6;34268:2;34272:6;34280:7;34239:20;:49::i;:::-;34305:7;34301:586;;;34373:4;34329:23;19120:18;;;;;;;;;;;34435:13;;34416:32;;;;;:70;;-1:-1:-1;34470:16:0;;;;34469:17;34416:70;:112;;;;-1:-1:-1;34507:21:0;;;;;;;34416:112;:156;;;;;34559:13;-1:-1:-1;;;;;34549:23:0;:6;-1:-1:-1;;;;;34549:23:0;;;34416:156;34394:258;;;34607:29;34622:13;;34607:14;:29::i;:::-;34668:11;34682:29;34695:6;34703:7;34682:12;:29::i;:::-;34668:43;;34726:37;34736:6;34752:4;34759:3;34726:9;:37::i;:::-;34778:35;34788:6;34796:2;34800:12;34809:3;34800:6;:12;:::i;34778:35::-;34314:511;;34301:586;;;34846:29;34856:6;34864:2;34868:6;34846:9;:29::i;:::-;-1:-1:-1;34906:4:0;;34004:914;-1:-1:-1;;;;;34004:914:0:o;42492:179::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;42572:18:::1;:30:::0;;;42618:45:::1;::::0;160:25:1;;;42618:45:0::1;::::0;148:2:1;133:18;42618:45:0::1;14:177:1::0;42679:159:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;42754:13:::1;:25:::0;;;42795:35:::1;::::0;160:25:1;;;42795:35:0::1;::::0;148:2:1;133:18;42795:35:0::1;14:177:1::0;44302:274:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44393:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;44371:111;;;::::0;-1:-1:-1;;;44371:111:0;;12156:2:1;44371:111:0::1;::::0;::::1;12138:21:1::0;12195:2;12175:18;;;12168:30;12234:34;12214:18;;;12207:62;-1:-1:-1;;;12285:18:1;;;12278:32;12327:19;;44371:111:0::1;11954:398:1::0;44371:111:0::1;-1:-1:-1::0;;;;;44493:27:0;::::1;44523:5;44493:27:::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;44493:35:0::1;::::0;;44546:22;;1569:51:1;;;44546:22:0::1;::::0;1542:18:1;44546:22:0::1;1397:229:1::0;45235:190:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;45329:21:::1;::::0;;::::1;;::::0;;::::1;::::0;::::1;45328:22;45304:46:::0;::::1;-1:-1:-1::0;;45304:46:0;;::::1;::::0;;;::::1;::::0;;;;45366:51:::1;::::0;::::1;::::0;::::1;::::0;45395:21;::::1;::::0;;::::1;1370:14:1::0;1363:22;1345:41;;1333:2;1318:18;;1205:187;45366:51:0::1;;;;;;;;45235:190::o:0;11358:201::-;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11447:22:0;::::1;11439:73;;;::::0;-1:-1:-1;;;11439:73:0;;12559:2:1;11439:73:0::1;::::0;::::1;12541:21:1::0;12598:2;12578:18;;;12571:30;12637:34;12617:18;;;12610:62;-1:-1:-1;;;12688:18:1;;;12681:36;12734:19;;11439:73:0::1;12357:402:1::0;11439:73:0::1;11523:28;11542:8;11523:18;:28::i;41876:424::-:0;10522:6;;-1:-1:-1;;;;;10522:6:0;9236:10;10669:23;10661:68;;;;-1:-1:-1;;;10661:68:0;;;;;;;:::i;:::-;42160:58:::1;42170:13;42185:12;42199:7;42208:9;42160;:58::i;:::-;42229:63;42240:14;42256:13;42271:8;42281:10;42229;:63::i;:::-;41876:424:::0;;;;;;;;:::o;25943:380::-;-1:-1:-1;;;;;26079:19:0;;26071:68;;;;-1:-1:-1;;;26071:68:0;;12966:2:1;26071:68:0;;;12948:21:1;13005:2;12985:18;;;12978:30;13044:34;13024:18;;;13017:62;-1:-1:-1;;;13095:18:1;;;13088:34;13139:19;;26071:68:0;12764:400:1;26071:68:0;-1:-1:-1;;;;;26158:21:0;;26150:68;;;;-1:-1:-1;;;26150:68:0;;13371:2:1;26150:68:0;;;13353:21:1;13410:2;13390:18;;;13383:30;13449:34;13429:18;;;13422:62;-1:-1:-1;;;13500:18:1;;;13493:32;13542:19;;26150:68:0;13169:398:1;26150:68:0;-1:-1:-1;;;;;26231:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26283:32;;160:25:1;;;26283:32:0;;133:18:1;26283:32:0;;;;;;;25943:380;;;:::o;37083:422::-;37185:4;37191:7;37228:13;-1:-1:-1;;;;;37220:21:0;:4;-1:-1:-1;;;;;37220:21:0;;:48;;;;-1:-1:-1;;;;;;37246:22:0;;;;;;:18;:22;;;;;;;;37245:23;37220:48;37216:282;;;-1:-1:-1;37293:4:0;;-1:-1:-1;37293:4:0;37285:26;;37216:282;37339:13;-1:-1:-1;;;;;37333:19:0;:2;-1:-1:-1;;;;;37333:19:0;;:48;;;;-1:-1:-1;;;;;;37357:24:0;;;;;;:18;:24;;;;;;;;37356:25;37333:48;37329:169;;;-1:-1:-1;37406:4:0;;-1:-1:-1;37412:12:0;37398:27;;37329:169;-1:-1:-1;37466:5:0;;-1:-1:-1;37466:5:0;37329:169;37083:422;;;;;:::o;36247:828::-;-1:-1:-1;;;;;36424:23:0;;;;;;:17;:23;;;;;;;;36423:24;;:50;;-1:-1:-1;;;;;;36452:21:0;;;;;;:17;:21;;;;;;;;36451:22;36423:50;36401:119;;;;-1:-1:-1;;;36401:119:0;;13774:2:1;36401:119:0;;;13756:21:1;13813:2;13793:18;;;13786:30;-1:-1:-1;;;13832:18:1;;;13825:49;13891:18;;36401:119:0;13572:343:1;36401:119:0;36541:13;-1:-1:-1;;;;;36535:19:0;:2;-1:-1:-1;;;;;36535:19:0;;36531:242;;36622:13;;36613:6;36597:13;36607:2;-1:-1:-1;;;;;19120:18:0;19093:7;19120:18;;;;;;;;;;;;19019:127;36597:13;:22;;;;:::i;:::-;:38;:91;;;-1:-1:-1;;;;;;36660:28:0;;;;;;:24;:28;;;;;;;;36597:91;36571:190;;;;-1:-1:-1;;;36571:190:0;;14122:2:1;36571:190:0;;;14104:21:1;14161:2;14141:18;;;14134:30;14200:34;14180:18;;;14173:62;-1:-1:-1;;;14251:18:1;;;14244:35;14296:19;;36571:190:0;13920:401:1;36571:190:0;36787:7;36783:285;;;36847:18;;36837:6;:28;;:152;;;-1:-1:-1;;;;;;36891:35:0;;;;;;:29;:35;;;;;;;;;:97;;-1:-1:-1;;;;;;36955:33:0;;;;;;:29;:33;;;;;;;;36891:97;36811:245;;;;-1:-1:-1;;;36811:245:0;;14528:2:1;36811:245:0;;;14510:21:1;14567:2;14547:18;;;14540:30;14606:33;14586:18;;;14579:61;14657:18;;36811:245:0;14326:355:1;36811:245:0;36247:828;;;;:::o;26610:453::-;-1:-1:-1;;;;;19724:18:0;;;26745:24;19724:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;26812:37:0;;26808:248;;26894:6;26874:16;:26;;26866:68;;;;-1:-1:-1;;;26866:68:0;;14888:2:1;26866:68:0;;;14870:21:1;14927:2;14907:18;;;14900:30;14966:31;14946:18;;;14939:59;15015:18;;26866:68:0;14686:353:1;26866:68:0;26978:51;26987:5;26994:7;27022:6;27003:16;:25;26978:8;:51::i;38187:1207::-;32522:16;:23;;-1:-1:-1;;32522:23:0;32541:4;32522:23;;;38373:6:::1;:12:::0;32522:16;;38373:12:::1;-1:-1:-1::0;;;38373:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;38347:10:0;::::1;::::0;::::1;::::0;38284:47:::1;::::0;38315:16;;::::1;::::0;38284:15;;;::::1;;:47;:::i;:::-;:73;;;;:::i;:::-;:101;;;;:::i;:::-;38259:126;;;;38401:14;38419:1;38401:19:::0;38398:56:::1;;38436:7;;;38398:56;38499:6;:16:::0;38466:20:::1;::::0;38519:14;;38490:25:::1;::::0;38499:16:::1;;38490:6:::0;:25:::1;:::i;:::-;38489:44;;;;:::i;:::-;38466:67:::0;-1:-1:-1;38546:45:0::1;38573:16;38588:1;38466:67:::0;38573:16:::1;:::i;:::-;38563:27;::::0;:6;:27:::1;:::i;:::-;38546:16;:45::i;:::-;38780:6;:12:::0;38626:21:::1;::::0;38604:19:::1;::::0;38780:12:::1;-1:-1:-1::0;;;38780:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;38754:10:0;::::1;::::0;::::1;::::0;38717:20:::1;::::0;38736:1:::1;::::0;38717:16:::1;:20;:::i;:::-;38685:6;:15:::0;:53:::1;::::0;;:15;;::::1;;;:53;:::i;:::-;:79;;;;:::i;:::-;:107;;;;:::i;:::-;38842:6;:15:::0;38660:132:::1;::::0;;::::1;::::0;-1:-1:-1;38805:19:0::1;::::0;38660:132;;38828:29:::1;::::0;38842:15;;;::::1;;38828:11:::0;:29:::1;:::i;:::-;38827:48;;;;:::i;:::-;38925:6;:16:::0;38805:70;;-1:-1:-1;38886:20:0::1;::::0;38963:14;;38925:20:::1;::::0;38944:1:::1;::::0;38925:16:::1;;:20;:::i;:::-;38910:36;::::0;::::1;;:11:::0;:36:::1;:::i;:::-;38909:68;;;;:::i;:::-;39022:6;:12:::0;38886:91;;-1:-1:-1;38988:16:0::1;::::0;39038:14;;39008:26:::1;::::0;-1:-1:-1;;;39022:12:0;::::1;;;39008:11:::0;:26:::1;:::i;:::-;39007:45;;;;:::i;:::-;38988:64:::0;-1:-1:-1;39069:16:0;;39065:93:::1;;39102:44;39115:16;39130:1;39115:12:::0;:16:::1;:::i;:::-;39133:12;39102;:44::i;:::-;39170:15;::::0;:37:::1;::::0;-1:-1:-1;;;;;39170:15:0;;::::1;::::0;:37;::::1;;;::::0;39195:11;;39170:15:::1;:37:::0;:15;:37;39195:11;39170:15;:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39220:12:0::1;::::0;:31:::1;::::0;-1:-1:-1;;;;;39220:12:0;;::::1;::::0;:31;::::1;;;::::0;39242:8;;39220:12:::1;:31:::0;:12;:31;39242:8;39220:12;:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39264:18:0::1;::::0;:50:::1;::::0;-1:-1:-1;;;;;39264:18:0;;::::1;::::0;39292:21:::1;39264:50:::0;::::1;;;::::0;:18:::1;:50:::0;:18;:50;39292:21;39264:18;:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39333:53:0::1;39348:6:::0;39356:11;39369:16:::1;39384:1;39369:12:::0;:16:::1;:::i;:::-;39333:53;::::0;;15868:25:1;;;15924:2;15909:18;;15902:34;;;;15952:18;;;15945:34;15856:2;15841:18;39333:53:0::1;;;;;;;38248:1146;;;;;;;32556:1;-1:-1:-1::0;32568:16:0;:24;;-1:-1:-1;;32568:24:0;;;38187:1207::o;37513:666::-;37618:11;;37698;37687:7;:22;;;;;;;;:::i;:::-;;37683:413;;37860:6;:12;;-1:-1:-1;;;37860:12:0;;;;;-1:-1:-1;;;37830:10:0;;;;;37759:51;;37794:16;;;;37759:15;;;;;:51;:::i;:::-;:81;;;;:::i;:::-;:113;;;;:::i;:::-;37726:146;;;;37683:413;;;37905:12;37894:7;:23;;;;;;;;:::i;:::-;;37890:206;;38071:7;:13;;-1:-1:-1;;;38071:13:0;;;;;-1:-1:-1;;;38040:11:0;;;;;37967:53;;38003:17;;;;37967:16;;;;;:53;:::i;:::-;:84;;;;:::i;:::-;:117;;;;:::i;:::-;37934:150;;;;37890:206;31444:5;38113:22;38122:13;38113:6;:22;:::i;:::-;38112:36;;;;:::i;:::-;38106:42;37513:666;-1:-1:-1;;;;37513:666:0:o;23224:671::-;-1:-1:-1;;;;;23355:18:0;;23347:68;;;;-1:-1:-1;;;23347:68:0;;16324:2:1;23347:68:0;;;16306:21:1;16363:2;16343:18;;;16336:30;16402:34;16382:18;;;16375:62;-1:-1:-1;;;16453:18:1;;;16446:35;16498:19;;23347:68:0;16122:401:1;23347:68:0;-1:-1:-1;;;;;23434:16:0;;23426:64;;;;-1:-1:-1;;;23426:64:0;;16730:2:1;23426:64:0;;;16712:21:1;16769:2;16749:18;;;16742:30;16808:34;16788:18;;;16781:62;-1:-1:-1;;;16859:18:1;;;16852:33;16902:19;;23426:64:0;16528:399:1;23426:64:0;-1:-1:-1;;;;;23576:15:0;;23554:19;23576:15;;;;;;;;;;;23610:21;;;;23602:72;;;;-1:-1:-1;;;23602:72:0;;17134:2:1;23602:72:0;;;17116:21:1;17173:2;17153:18;;;17146:30;17212:34;17192:18;;;17185:62;-1:-1:-1;;;17263:18:1;;;17256:36;17309:19;;23602:72:0;16932:402:1;23602:72:0;-1:-1:-1;;;;;23710:15:0;;;:9;:15;;;;;;;;;;;23728:20;;;23710:38;;23770:13;;;;;;;;:23;;23742:6;;23710:9;23770:23;;23742:6;;23770:23;:::i;:::-;;;;;;;;23826:2;-1:-1:-1;;;;;23811:26:0;23820:4;-1:-1:-1;;;;;23811:26:0;;23830:6;23811:26;;;;160:25:1;;148:2;133:18;;14:177;23811:26:0;;;;;;;;23850:37;45686:172;24914:591;-1:-1:-1;;;;;24998:21:0;;24990:67;;;;-1:-1:-1;;;24990:67:0;;17541:2:1;24990:67:0;;;17523:21:1;17580:2;17560:18;;;17553:30;17619:34;17599:18;;;17592:62;-1:-1:-1;;;17670:18:1;;;17663:31;17711:19;;24990:67:0;17339:397:1;24990:67:0;-1:-1:-1;;;;;25157:18:0;;25132:22;25157:18;;;;;;;;;;;25194:24;;;;25186:71;;;;-1:-1:-1;;;25186:71:0;;17943:2:1;25186:71:0;;;17925:21:1;17982:2;17962:18;;;17955:30;18021:34;18001:18;;;17994:62;-1:-1:-1;;;18072:18:1;;;18065:32;18114:19;;25186:71:0;17741:398:1;25186:71:0;-1:-1:-1;;;;;25293:18:0;;:9;:18;;;;;;;;;;25314:23;;;25293:44;;25359:12;:22;;25331:6;;25293:9;25359:22;;25331:6;;25359:22;:::i;:::-;;;;-1:-1:-1;;25399:37:0;;160:25:1;;;25425:1:0;;-1:-1:-1;;;;;25399:37:0;;;;;148:2:1;133:18;25399:37:0;;;;;;;45801:49:::1;45686:172:::0;;:::o;11719:191::-;11812:6;;;-1:-1:-1;;;;;11829:17:0;;;-1:-1:-1;;;;;;11829:17:0;;;;;;;11862:40;;11812:6;;;11829:17;11812:6;;11862:40;;11793:16;;11862:40;11782:128;11719:191;:::o;39402:476::-;39493:16;;;39507:1;39493:16;;;;;;;;39469:21;;39493:16;;;;;;;;;;-1:-1:-1;39493:16:0;39469:40;;39538:4;39520;39525:1;39520:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;39520:23:0;;;-1:-1:-1;;;;;39520:23:0;;;;;39564:15;-1:-1:-1;;;;;39564:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39554:4;39559:1;39554:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;39554:32:0;;;-1:-1:-1;;;;;39554:32:0;;;;;39599:62;39616:4;39631:15;39649:11;39599:8;:62::i;:::-;39674:196;;-1:-1:-1;;;39674:196:0;;-1:-1:-1;;;;;39674:15:0;:66;;;;:196;;39755:11;;39781:1;;39797:4;;39824;;39844:15;;39674:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39458:420;39402:476;:::o;39886:369::-;39968:62;39985:4;40000:15;40018:11;39968:8;:62::i;:::-;40043:204;;-1:-1:-1;;;40043:204:0;;40115:4;40043:204;;;19990:34:1;;;20040:18;;;20033:34;;;40161:1:0;20083:18:1;;;20076:34;;;20126:18;;;20119:34;20169:19;;;20162:44;40221:15:0;20222:19:1;;;20215:35;40043:15:0;-1:-1:-1;;;;;40043:31:0;;;;40082:9;;19924:19:1;;40043:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;39886:369;;:::o;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:315;400:6;408;461:2;449:9;440:7;436:23;432:32;429:52;;;477:1;474;467:12;429:52;516:9;503:23;535:31;560:5;535:31;:::i;:::-;585:5;637:2;622:18;;;;609:32;;-1:-1:-1;;;332:315:1:o;652:548::-;764:4;793:2;822;811:9;804:21;854:6;848:13;897:6;892:2;881:9;877:18;870:34;922:1;932:140;946:6;943:1;940:13;932:140;;;1041:14;;;1037:23;;1031:30;1007:17;;;1026:2;1003:26;996:66;961:10;;932:140;;;936:3;1121:1;1116:2;1107:6;1096:9;1092:22;1088:31;1081:42;1191:2;1184;1180:7;1175:2;1167:6;1163:15;1159:29;1148:9;1144:45;1140:54;1132:62;;;;652:548;;;;:::o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2092:247::-;2151:6;2204:2;2192:9;2183:7;2179:23;2175:32;2172:52;;;2220:1;2217;2210:12;2172:52;2259:9;2246:23;2278:31;2303:5;2278:31;:::i;:::-;2328:5;2092:247;-1:-1:-1;;;2092:247:1:o;3206:180::-;3265:6;3318:2;3306:9;3297:7;3293:23;3289:32;3286:52;;;3334:1;3331;3324:12;3286:52;-1:-1:-1;3357:23:1;;3206:180;-1:-1:-1;3206:180:1:o;3599:159::-;3666:20;;3726:6;3715:18;;3705:29;;3695:57;;3748:1;3745;3738:12;3695:57;3599:159;;;:::o;3763:401::-;3845:6;3853;3861;3869;3922:3;3910:9;3901:7;3897:23;3893:33;3890:53;;;3939:1;3936;3929:12;3890:53;3962:28;3980:9;3962:28;:::i;:::-;3952:38;;4009:37;4042:2;4031:9;4027:18;4009:37;:::i;:::-;3999:47;;4065:37;4098:2;4087:9;4083:18;4065:37;:::i;:::-;4055:47;;4121:37;4154:2;4143:9;4139:18;4121:37;:::i;:::-;4111:47;;3763:401;;;;;;;:::o;4169:388::-;4237:6;4245;4298:2;4286:9;4277:7;4273:23;4269:32;4266:52;;;4314:1;4311;4304:12;4266:52;4353:9;4340:23;4372:31;4397:5;4372:31;:::i;:::-;4422:5;-1:-1:-1;4479:2:1;4464:18;;4451:32;4492:33;4451:32;4492:33;:::i;:::-;4544:7;4534:17;;;4169:388;;;;;:::o;4562:693::-;4676:6;4684;4692;4700;4708;4716;4724;4732;4785:3;4773:9;4764:7;4760:23;4756:33;4753:53;;;4802:1;4799;4792:12;4753:53;4825:28;4843:9;4825:28;:::i;:::-;4815:38;;4872:37;4905:2;4894:9;4890:18;4872:37;:::i;:::-;4862:47;;4928:37;4961:2;4950:9;4946:18;4928:37;:::i;:::-;4918:47;;4984:37;5017:2;5006:9;5002:18;4984:37;:::i;:::-;4974:47;;5040:38;5073:3;5062:9;5058:19;5040:38;:::i;:::-;5030:48;;5097:38;5130:3;5119:9;5115:19;5097:38;:::i;:::-;5087:48;;5154:38;5187:3;5176:9;5172:19;5154:38;:::i;:::-;5144:48;;5211:38;5244:3;5233:9;5229:19;5211:38;:::i;:::-;5201:48;;4562:693;;;;;;;;;;;:::o;5260:356::-;5462:2;5444:21;;;5481:18;;;5474:30;5540:34;5535:2;5520:18;;5513:62;5607:2;5592:18;;5260:356::o;5900:277::-;5967:6;6020:2;6008:9;5999:7;5995:23;5991:32;5988:52;;;6036:1;6033;6026:12;5988:52;6068:9;6062:16;6121:5;6114:13;6107:21;6100:5;6097:32;6087:60;;6143:1;6140;6133:12;6182:380;6261:1;6257:12;;;;6304;;;6325:61;;6379:4;6371:6;6367:17;6357:27;;6325:61;6432:2;6424:6;6421:14;6401:18;6398:38;6395:161;;6478:10;6473:3;6469:20;6466:1;6459:31;6513:4;6510:1;6503:15;6541:4;6538:1;6531:15;6395:161;;6182:380;;;:::o;6567:127::-;6628:10;6623:3;6619:20;6616:1;6609:31;6659:4;6656:1;6649:15;6683:4;6680:1;6673:15;6699:128;6766:9;;;6787:11;;;6784:37;;;6801:18;;:::i;7758:125::-;7823:9;;;7844:10;;;7841:36;;;7857:18;;:::i;9115:168::-;9182:6;9208:10;;;9220;;;9204:27;;9243:11;;;9240:37;;;9257:18;;:::i;:::-;9240:37;9115:168;;;;:::o;15044:::-;15117:9;;;15148;;15165:15;;;15159:22;;15145:37;15135:71;;15186:18;;:::i;15217:127::-;15278:10;15273:3;15269:20;15266:1;15259:31;15309:4;15306:1;15299:15;15333:4;15330:1;15323:15;15349:120;15389:1;15415;15405:35;;15420:18;;:::i;:::-;-1:-1:-1;15454:9:1;;15349:120::o;15474:187::-;15513:1;15539:6;15572:2;15569:1;15565:10;15594:3;15584:37;;15601:18;;:::i;:::-;15639:10;;15635:20;;;;;15474:187;-1:-1:-1;;15474:187:1:o;15990:127::-;16051:10;16046:3;16042:20;16039:1;16032:31;16082:4;16079:1;16072:15;16106:4;16103:1;16096:15;18276:127;18337:10;18332:3;18328:20;18325:1;18318:31;18368:4;18365:1;18358:15;18392:4;18389:1;18382:15;18408:251;18478:6;18531:2;18519:9;18510:7;18506:23;18502:32;18499:52;;;18547:1;18544;18537:12;18499:52;18579:9;18573:16;18598:31;18623:5;18598:31;:::i;18664:980::-;18926:4;18974:3;18963:9;18959:19;19005:6;18994:9;18987:25;19031:2;19069:6;19064:2;19053:9;19049:18;19042:34;19112:3;19107:2;19096:9;19092:18;19085:31;19136:6;19171;19165:13;19202:6;19194;19187:22;19240:3;19229:9;19225:19;19218:26;;19279:2;19271:6;19267:15;19253:29;;19300:1;19310:195;19324:6;19321:1;19318:13;19310:195;;;19389:13;;-1:-1:-1;;;;;19385:39:1;19373:52;;19480:15;;;;19445:12;;;;19421:1;19339:9;19310:195;;;-1:-1:-1;;;;;;;19561:32:1;;;;19556:2;19541:18;;19534:60;-1:-1:-1;;;19625:3:1;19610:19;19603:35;19522:3;18664:980;-1:-1:-1;;;18664:980:1:o;20261:306::-;20349:6;20357;20365;20418:2;20406:9;20397:7;20393:23;20389:32;20386:52;;;20434:1;20431;20424:12;20386:52;20463:9;20457:16;20447:26;;20513:2;20502:9;20498:18;20492:25;20482:35;;20557:2;20546:9;20542:18;20536:25;20526:35;;20261:306;;;;;:::o

Swarm Source

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