ETH Price: $3,094.84 (+0.73%)
Gas: 4 Gwei

Token

Target Protocol (TARGET)
 

Overview

Max Total Supply

10,000,000 TARGET

Holders

142

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: TARGET 7
Balance
6,539,601.05271123660040844 TARGET

Value
$0.00
0xedd0d8d97b5d5f0e94eaec3680f475663249ddc3
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:
TargetProtocol

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-15
*/

//................................................................................
//................................................................................
//................................................................................
//.................................. ##########.  ................................
//.................................#########%####.................................
//...............................#####(..... ((%%##...............................
//.............................%%##  ........... .#%##............................
//.............................####...............####............................
//.............................####...............####............................
//....................... .....####   .........  .####............................
//......................((######################%########%((......................
//......................####################################......................
//..................... ###################%################......................
//..................... #################..*################......................
//..................... #################. *#%##############......................
//..................... ###############..... *##############......................
//..................... ###############..... *##############......................
//..................... ###############......*##############......................
//..................... ###############//////(##############......................
//..................... ####################################......................
//..................... ####################################......................
//......................%###################################......................
//................................................................................
//...........................   Target Protocol Token   ..........................
//.............       Execute Conviction Plays with confidence       .............
//................................................................................
//..................   X: https://twitter.com/target_protocol   ..................
//..................           DApp: targetprotocol.xyz         ..................
//................................................................................
//................................................................................


pragma solidity ^0.8.0;
/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

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

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

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

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

/**
 * @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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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);
    }
}

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

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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


contract TargetProtocol is Ownable, ERC20 {

    IUniswapV2Router02 public router;
    IUniswapV2Factory public factory;
    IUniswapV2Pair public pair;

    uint private constant INITIAL_SUPPLY = 10_000_000 * 10**18;

    uint public buyTaxBps = 500;
    uint public sellTaxBps = 500;

    bool isSellingCollectedTaxes;

    event AntiBotEngaged();
    event AntiBotDisengaged();
    event StealthLaunchEngaged();

    bool public isLaunched;

    address public taxWallet;
    address[] public marked;

    bool public engagedOnce;
    bool public disengagedOnce;

    constructor() ERC20("Target Protocol", "TARGET", 18) {
        if (block.chainid == 11155111){
            router = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008);
        } else router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        factory = IUniswapV2Factory(router.factory());
        _mint(msg.sender, INITIAL_SUPPLY);

        // Approve infinite spending by DEX, to sell tokens collected via tax.
        allowance[address(this)][address(router)] = type(uint).max;
        emit Approval(address(this), address(router), type(uint).max);
        pair = IUniswapV2Pair(factory.createPair(address(this), router.WETH()));
        
        isLaunched = false;
    }

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

    receive() external payable {}

    fallback() external payable {}

    function burn(uint amount) external {
        _burn(msg.sender, amount);
    }

    function getMinSwapAmount() internal view returns (uint) {
        return (totalSupply * 1) / 10000; // 0.01%
    }

    function enableAntiBotMode() public onlyOwner {
        require(!engagedOnce, "this is a one shot function");
        engagedOnce = true;
        buyTaxBps = 4000;
        sellTaxBps = 4000;
        emit AntiBotEngaged();
    }

    function disableAntiBotMode() public onlyOwner {
        require(!disengagedOnce, "this is a one shot function");
        disengagedOnce = true;
        buyTaxBps = 500;
        sellTaxBps = 500;
        emit AntiBotDisengaged();
    }

    function setTaxWallet(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        taxWallet = wallet;
    }

    /**
     * @dev Calculate the amount of tax to apply to a transaction.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity of tokens being sent
     * @return the amount of tokens to withhold for taxes
     */
    function calcTax(address from, address to, uint amount) internal view returns (uint) {
        if (from == owner() || to == owner() || from == address(this)) {
            // For adding liquidity at the beginning
            //
            // Also for this contract selling the collected tax.
            return 0;
        } else if (from == address(pair)) {

            return amount * buyTaxBps / 10_000;
        } else if (to == address(pair)) {

            return amount * sellTaxBps / 10_000;
        } else {

            // Sending to other wallets (e.g. OTC) is tax-free.
            return 0;
        }
    }

    /**
     * @dev Sell the balance accumulated from taxes.
     */
    function sellCollectedTaxes() internal lockTheSwap {

        uint tokensToSwap = balanceOf[address(this)];

        // Sell
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokensToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        taxWallet.call{value: address(this).balance}("");
    }

    /**
     * @dev Transfer tokens from the caller to another address.
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transfer(address to, uint amount) public override returns (bool) {
        return transferFrom(msg.sender, to, amount);
    }

    /**
     * @dev Transfer tokens from one address to another. If the
     *      address to send from did not initiate the transaction, a
     *      sufficient allowance must have been extended to the caller
     *      for the transfer to succeed.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transferFrom(
        address from,
        address to,
        uint amount
    ) public override returns (bool) {
        if (from != msg.sender) {
            // This is a typical transferFrom

            uint allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

            if (allowed != type(uint).max) allowance[from][msg.sender] = allowed - amount;
        }



        if(!disengagedOnce){
            if(to != owner() && from != owner() && to != address(router) && to != address(pair)){
                uint256 maxHolding = (totalSupply * 100) / 10000;
                require(balanceOf[to] + amount <= maxHolding, "Recipient holding exceeds maximum allowed");
            }
        }


        if (balanceOf[address(this)] > getMinSwapAmount() && !isSellingCollectedTaxes && from != address(pair) && from != address(this)) {
            sellCollectedTaxes();
        }

        uint tax = calcTax(from, to, amount);
        uint afterTaxAmount = amount - tax;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint value.
        unchecked {
            balanceOf[to] += afterTaxAmount;
        }

        emit Transfer(from, to, afterTaxAmount);

        if (tax > 0) {
            
            unchecked {
                balanceOf[address(this)] += tax;
            }

            // Any transfer to the contract can be viewed as tax
            emit Transfer(from, address(this), tax);
        }

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AntiBotDisengaged","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiBotEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"StealthLaunchEngaged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","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":[],"name":"buyTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disengagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAntiBotMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"engagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marked","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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"},{"stateMutability":"payable","type":"receive"}]

60e06040526101f4600a556101f4600b553480156200001c575f80fd5b506040518060400160405280600f81526020017f5461726765742050726f746f636f6c00000000000000000000000000000000008152506040518060400160405280600681526020017f54415247455400000000000000000000000000000000000000000000000000008152506012620000ab6200009f6200059c60201b60201c565b620005a360201b60201c565b8260019081620000bc919062000a26565b508160029081620000ce919062000a26565b508060ff1660808160ff16815250504660a08181525050620000f56200066460201b60201c565b60c0818152505050505062aa36a74603620001645773c532a74256d3db42d0bf7a0400fefdbad769400860075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001b9565b737a250d5630b4cf539739df2c5dacb4c659f2488d60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000224573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024a919062000b6f565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002a6336a084595161401484a000000620006f360201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405162000404919062000bb0565b60405180910390a360085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c653963060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004db919062000b6f565b6040518363ffffffff1660e01b8152600401620004fa92919062000bdc565b6020604051808303815f875af115801562000517573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200053d919062000b6f565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600c60016101000a81548160ff02191690831515021790555062000da3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405162000697919062000caf565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001620006d895949392919062000ce1565b60405160208183030381529060405280519060200120905090565b8060035f82825462000706919062000d69565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007b6919062000bb0565b60405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200083e57607f821691505b602082108103620008545762000853620007f9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200087b565b620008c486836200087b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200090e620009086200090284620008dc565b620008e5565b620008dc565b9050919050565b5f819050919050565b6200092983620008ee565b62000941620009388262000915565b84845462000887565b825550505050565b5f90565b6200095762000949565b620009648184846200091e565b505050565b5b818110156200098b576200097f5f826200094d565b6001810190506200096a565b5050565b601f821115620009da57620009a4816200085a565b620009af846200086c565b81016020851015620009bf578190505b620009d7620009ce856200086c565b83018262000969565b50505b505050565b5f82821c905092915050565b5f620009fc5f1984600802620009df565b1980831691505092915050565b5f62000a168383620009eb565b9150826002028217905092915050565b62000a3182620007c2565b67ffffffffffffffff81111562000a4d5762000a4c620007cc565b5b62000a59825462000826565b62000a668282856200098f565b5f60209050601f83116001811462000a9c575f841562000a87578287015190505b62000a93858262000a09565b86555062000b02565b601f19841662000aac866200085a565b5f5b8281101562000ad55784890151825560018201915060208501945060208101905062000aae565b8683101562000af5578489015162000af1601f891682620009eb565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b398262000b0e565b9050919050565b62000b4b8162000b2d565b811462000b56575f80fd5b50565b5f8151905062000b698162000b40565b92915050565b5f6020828403121562000b875762000b8662000b0a565b5b5f62000b968482850162000b59565b91505092915050565b62000baa81620008dc565b82525050565b5f60208201905062000bc55f83018462000b9f565b92915050565b62000bd68162000b2d565b82525050565b5f60408201905062000bf15f83018562000bcb565b62000c00602083018462000bcb565b9392505050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815462000c318162000826565b62000c3d818662000c07565b9450600182165f811462000c5a576001811462000c705762000ca6565b60ff198316865281151582028601935062000ca6565b62000c7b8562000c11565b5f5b8381101562000c9e5781548189015260018201915060208101905062000c7d565b838801955050505b50505092915050565b5f62000cbc828462000c23565b915081905092915050565b5f819050919050565b62000cdb8162000cc7565b82525050565b5f60a08201905062000cf65f83018862000cd0565b62000d05602083018762000cd0565b62000d14604083018662000cd0565b62000d23606083018562000b9f565b62000d32608083018462000bcb565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d7582620008dc565b915062000d8283620008dc565b925082820190508082111562000d9d5762000d9c62000d3c565b5b92915050565b60805160a05160c051612caa62000dce5f395f610fd301525f610f9f01525f610f7a0152612caa5ff3fe6080604052600436106101c5575f3560e01c80637ecebe00116100f6578063c473413a11610094578063ea414b2811610063578063ea414b281461063a578063f2fde38b14610662578063f887ea401461068a578063f98eb6e1146106b4576101cc565b8063c473413a14610582578063cffd129c146105ac578063d505accf146105d6578063dd62ed3e146105fe576101cc565b806395d89b41116100d057806395d89b41146104c8578063a8aa1b31146104f2578063a9059cbb1461051c578063c45a015514610558576101cc565b80637ecebe00146104265780638da5cb5b1461046257806392e37a931461048c576101cc565b8063307aebc91161016357806342966c681161013d57806342966c681461038257806370a08231146103aa578063715018a6146103e65780637d5ea21b146103fc576101cc565b8063307aebc914610304578063313ce5671461032e5780633644e51514610358576101cc565b806323b872dd1161019f57806323b872dd1461025e578063270fd20a1461029a5780632ca1b45d146102c45780632dc0562d146102da576101cc565b806306fdde03146101ce578063095ea7b3146101f857806318160ddd14610234576101cc565b366101cc57005b005b3480156101d9575f80fd5b506101e26106ca565b6040516101ef9190611ec9565b60405180910390f35b348015610203575f80fd5b5061021e60048036038101906102199190611f7a565b610756565b60405161022b9190611fd2565b60405180910390f35b34801561023f575f80fd5b50610248610843565b6040516102559190611ffa565b60405180910390f35b348015610269575f80fd5b50610284600480360381019061027f9190612013565b610849565b6040516102919190611fd2565b60405180910390f35b3480156102a5575f80fd5b506102ae610e7b565b6040516102bb9190611fd2565b60405180910390f35b3480156102cf575f80fd5b506102d8610e8e565b005b3480156102e5575f80fd5b506102ee610f3f565b6040516102fb9190612072565b60405180910390f35b34801561030f575f80fd5b50610318610f65565b6040516103259190611fd2565b60405180910390f35b348015610339575f80fd5b50610342610f78565b60405161034f91906120a6565b60405180910390f35b348015610363575f80fd5b5061036c610f9c565b60405161037991906120d7565b60405180910390f35b34801561038d575f80fd5b506103a860048036038101906103a391906120f0565b610ff8565b005b3480156103b5575f80fd5b506103d060048036038101906103cb919061211b565b611005565b6040516103dd9190611ffa565b60405180910390f35b3480156103f1575f80fd5b506103fa61101a565b005b348015610407575f80fd5b5061041061102d565b60405161041d9190611fd2565b60405180910390f35b348015610431575f80fd5b5061044c6004803603810190610447919061211b565b61103f565b6040516104599190611ffa565b60405180910390f35b34801561046d575f80fd5b50610476611054565b6040516104839190612072565b60405180910390f35b348015610497575f80fd5b506104b260048036038101906104ad91906120f0565b61107b565b6040516104bf9190612072565b60405180910390f35b3480156104d3575f80fd5b506104dc6110b6565b6040516104e99190611ec9565b60405180910390f35b3480156104fd575f80fd5b50610506611142565b60405161051391906121a1565b60405180910390f35b348015610527575f80fd5b50610542600480360381019061053d9190611f7a565b611167565b60405161054f9190611fd2565b60405180910390f35b348015610563575f80fd5b5061056c61117b565b60405161057991906121da565b60405180910390f35b34801561058d575f80fd5b506105966111a0565b6040516105a39190611ffa565b60405180910390f35b3480156105b7575f80fd5b506105c06111a6565b6040516105cd9190611ffa565b60405180910390f35b3480156105e1575f80fd5b506105fc60048036038101906105f79190612247565b6111ac565b005b348015610609575f80fd5b50610624600480360381019061061f91906122e4565b611499565b6040516106319190611ffa565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b919061211b565b6114b9565b005b34801561066d575f80fd5b506106886004803603810190610683919061211b565b611573565b005b348015610695575f80fd5b5061069e6115f5565b6040516106ab9190612342565b60405180910390f35b3480156106bf575f80fd5b506106c861161a565b005b600180546106d790612388565b80601f016020809104026020016040519081016040528092919081815260200182805461070390612388565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108319190611ffa565b60405180910390a36001905092915050565b60035481565b5f3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146109ab575f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109a957828161092c91906123e5565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b600e60019054906101000a900460ff16610b99576109c7611054565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610a355750610a05611054565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610a8e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ae7575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610b98575f6127106064600354610aff9190612418565b610b099190612486565b9050808360045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b5591906124b6565b1115610b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8d90612559565b60405180910390fd5b505b5b610ba16116cd565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054118015610bf85750600c5f9054906101000a900460ff16155b8015610c51575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610c8957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610c9757610c966116ef565b5b5f610ca38585856119f5565b90505f8184610cb291906123e5565b90508360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d0091906123e5565b925050819055508060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dae9190611ffa565b60405180910390a35f821115610e6e578160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e659190611ffa565b60405180910390a35b6001925050509392505050565b600e60019054906101000a900460ff1681565b610e96611ba3565b600e5f9054906101000a900460ff1615610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc906125c1565b60405180910390fd5b6001600e5f6101000a81548160ff021916908315150217905550610fa0600a81905550610fa0600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60019054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610fd157610fcc611c21565b610ff3565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b6110023382611cac565b50565b6004602052805f5260405f205f915090505481565b611022611ba3565b61102b5f611d77565b565b600e5f9054906101000a900460ff1681565b6006602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d818154811061108a575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546110c390612388565b80601f01602080910402602001604051908101604052809291908181526020018280546110ef90612388565b801561113a5780601f106111115761010080835404028352916020019161113a565b820191905f5260205f20905b81548152906001019060200180831161111d57829003601f168201915b505050505081565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611173338484610849565b905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b428410156111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690612629565b60405180910390fd5b5f60016111fa610f9c565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b60405160200161127f96959493929190612647565b604051602081830303815290604052805190602001206040516020016112a692919061271a565b604051602081830303815290604052805190602001208585856040515f81526020016040526040516112db9493929190612750565b6020604051602081039080840390855afa1580156112fb573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561136e57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a4906127dd565b60405180910390fd5b8560055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516114889190611ffa565b60405180910390a350505050505050565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b6114c1611ba3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152690612845565b60405180910390fd5b80600c60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61157b611ba3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906128d3565b60405180910390fd5b6115f281611d77565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611622611ba3565b600e60019054906101000a900460ff1615611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906125c1565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b5f61271060016003546116e09190612418565b6116ea9190612486565b905090565b6001600c5f6101000a81548160ff0219169083151502179055505f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600267ffffffffffffffff811115611766576117656128f1565b5b6040519080825280602002602001820160405280156117945781602001602082028036833780820191505090505b50905030815f815181106117ab576117aa61291e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611873919061295f565b816001815181106118875761188661291e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611923959493929190612a7a565b5f604051808303815f87803b15801561193a575f80fd5b505af115801561194c573d5f803e3d5ffd5b50505050600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161199690612aff565b5f6040518083038185875af1925050503d805f81146119d0576040519150601f19603f3d011682016040523d82523d5f602084013e6119d5565b606091505b50505050505f600c5f6101000a81548160ff021916908315150217905550565b5f6119fe611054565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a695750611a3a611054565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611a9f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611aac575f9050611b9c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b2257612710600a5483611b119190612418565b611b1b9190612486565b9050611b9c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9857612710600b5483611b879190612418565b611b919190612486565b9050611b9c565b5f90505b9392505050565b611bab611e38565b73ffffffffffffffffffffffffffffffffffffffff16611bc9611054565b73ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690612b5d565b60405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611c529190612c0d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611c91959493929190612c23565b60405160208183030381529060405280519060200120905090565b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611cf891906123e5565b925050819055508060035f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6b9190611ffa565b60405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e76578082015181840152602081019050611e5b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e9b82611e3f565b611ea58185611e49565b9350611eb5818560208601611e59565b611ebe81611e81565b840191505092915050565b5f6020820190508181035f830152611ee18184611e91565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f1682611eed565b9050919050565b611f2681611f0c565b8114611f30575f80fd5b50565b5f81359050611f4181611f1d565b92915050565b5f819050919050565b611f5981611f47565b8114611f63575f80fd5b50565b5f81359050611f7481611f50565b92915050565b5f8060408385031215611f9057611f8f611ee9565b5b5f611f9d85828601611f33565b9250506020611fae85828601611f66565b9150509250929050565b5f8115159050919050565b611fcc81611fb8565b82525050565b5f602082019050611fe55f830184611fc3565b92915050565b611ff481611f47565b82525050565b5f60208201905061200d5f830184611feb565b92915050565b5f805f6060848603121561202a57612029611ee9565b5b5f61203786828701611f33565b935050602061204886828701611f33565b925050604061205986828701611f66565b9150509250925092565b61206c81611f0c565b82525050565b5f6020820190506120855f830184612063565b92915050565b5f60ff82169050919050565b6120a08161208b565b82525050565b5f6020820190506120b95f830184612097565b92915050565b5f819050919050565b6120d1816120bf565b82525050565b5f6020820190506120ea5f8301846120c8565b92915050565b5f6020828403121561210557612104611ee9565b5b5f61211284828501611f66565b91505092915050565b5f602082840312156121305761212f611ee9565b5b5f61213d84828501611f33565b91505092915050565b5f819050919050565b5f61216961216461215f84611eed565b612146565b611eed565b9050919050565b5f61217a8261214f565b9050919050565b5f61218b82612170565b9050919050565b61219b81612181565b82525050565b5f6020820190506121b45f830184612192565b92915050565b5f6121c482612170565b9050919050565b6121d4816121ba565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b6121fc8161208b565b8114612206575f80fd5b50565b5f81359050612217816121f3565b92915050565b612226816120bf565b8114612230575f80fd5b50565b5f813590506122418161221d565b92915050565b5f805f805f805f60e0888a03121561226257612261611ee9565b5b5f61226f8a828b01611f33565b97505060206122808a828b01611f33565b96505060406122918a828b01611f66565b95505060606122a28a828b01611f66565b94505060806122b38a828b01612209565b93505060a06122c48a828b01612233565b92505060c06122d58a828b01612233565b91505092959891949750929550565b5f80604083850312156122fa576122f9611ee9565b5b5f61230785828601611f33565b925050602061231885828601611f33565b9150509250929050565b5f61232c82612170565b9050919050565b61233c81612322565b82525050565b5f6020820190506123555f830184612333565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061239f57607f821691505b6020821081036123b2576123b161235b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6123ef82611f47565b91506123fa83611f47565b9250828203905081811115612412576124116123b8565b5b92915050565b5f61242282611f47565b915061242d83611f47565b925082820261243b81611f47565b91508282048414831517612452576124516123b8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61249082611f47565b915061249b83611f47565b9250826124ab576124aa612459565b5b828204905092915050565b5f6124c082611f47565b91506124cb83611f47565b92508282019050808211156124e3576124e26123b8565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d755f8201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b5f612543602983611e49565b915061254e826124e9565b604082019050919050565b5f6020820190508181035f83015261257081612537565b9050919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e00000000005f82015250565b5f6125ab601b83611e49565b91506125b682612577565b602082019050919050565b5f6020820190508181035f8301526125d88161259f565b9050919050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f612613601783611e49565b915061261e826125df565b602082019050919050565b5f6020820190508181035f83015261264081612607565b9050919050565b5f60c08201905061265a5f8301896120c8565b6126676020830188612063565b6126746040830187612063565b6126816060830186611feb565b61268e6080830185611feb565b61269b60a0830184611feb565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6126e46002836126a6565b91506126ef826126b0565b600282019050919050565b5f819050919050565b61271461270f826120bf565b6126fa565b82525050565b5f612724826126d8565b91506127308285612703565b6020820191506127408284612703565b6020820191508190509392505050565b5f6080820190506127635f8301876120c8565b6127706020830186612097565b61277d60408301856120c8565b61278a60608301846120c8565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6127c7600e83611e49565b91506127d282612793565b602082019050919050565b5f6020820190508181035f8301526127f4816127bb565b9050919050565b7f6e756c6c206164647265737300000000000000000000000000000000000000005f82015250565b5f61282f600c83611e49565b915061283a826127fb565b602082019050919050565b5f6020820190508181035f83015261285c81612823565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6128bd602683611e49565b91506128c882612863565b604082019050919050565b5f6020820190508181035f8301526128ea816128b1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061295981611f1d565b92915050565b5f6020828403121561297457612973611ee9565b5b5f6129818482850161294b565b91505092915050565b5f819050919050565b5f6129ad6129a86129a38461298a565b612146565b611f47565b9050919050565b6129bd81612993565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129f581611f0c565b82525050565b5f612a0683836129ec565b60208301905092915050565b5f602082019050919050565b5f612a28826129c3565b612a3281856129cd565b9350612a3d836129dd565b805f5b83811015612a6d578151612a5488826129fb565b9750612a5f83612a12565b925050600181019050612a40565b5085935050505092915050565b5f60a082019050612a8d5f830188611feb565b612a9a60208301876129b4565b8181036040830152612aac8186612a1e565b9050612abb6060830185612063565b612ac86080830184611feb565b9695505050505050565b5f81905092915050565b50565b5f612aea5f83612ad2565b9150612af582612adc565b5f82019050919050565b5f612b0982612adf565b9150819050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b47602083611e49565b9150612b5282612b13565b602082019050919050565b5f6020820190508181035f830152612b7481612b3b565b9050919050565b5f819050815f5260205f209050919050565b5f8154612b9981612388565b612ba38186612ad2565b9450600182165f8114612bbd5760018114612bd257612c04565b60ff1983168652811515820286019350612c04565b612bdb85612b7b565b5f5b83811015612bfc57815481890152600182019150602081019050612bdd565b838801955050505b50505092915050565b5f612c188284612b8d565b915081905092915050565b5f60a082019050612c365f8301886120c8565b612c4360208301876120c8565b612c5060408301866120c8565b612c5d6060830185611feb565b612c6a6080830184612063565b969550505050505056fea26469706673582212203e92414c0b4cfa5f64d4f36a365e47a3e47f2261b063d9ba90bcd13b5bbc2e8364736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637ecebe00116100f6578063c473413a11610094578063ea414b2811610063578063ea414b281461063a578063f2fde38b14610662578063f887ea401461068a578063f98eb6e1146106b4576101cc565b8063c473413a14610582578063cffd129c146105ac578063d505accf146105d6578063dd62ed3e146105fe576101cc565b806395d89b41116100d057806395d89b41146104c8578063a8aa1b31146104f2578063a9059cbb1461051c578063c45a015514610558576101cc565b80637ecebe00146104265780638da5cb5b1461046257806392e37a931461048c576101cc565b8063307aebc91161016357806342966c681161013d57806342966c681461038257806370a08231146103aa578063715018a6146103e65780637d5ea21b146103fc576101cc565b8063307aebc914610304578063313ce5671461032e5780633644e51514610358576101cc565b806323b872dd1161019f57806323b872dd1461025e578063270fd20a1461029a5780632ca1b45d146102c45780632dc0562d146102da576101cc565b806306fdde03146101ce578063095ea7b3146101f857806318160ddd14610234576101cc565b366101cc57005b005b3480156101d9575f80fd5b506101e26106ca565b6040516101ef9190611ec9565b60405180910390f35b348015610203575f80fd5b5061021e60048036038101906102199190611f7a565b610756565b60405161022b9190611fd2565b60405180910390f35b34801561023f575f80fd5b50610248610843565b6040516102559190611ffa565b60405180910390f35b348015610269575f80fd5b50610284600480360381019061027f9190612013565b610849565b6040516102919190611fd2565b60405180910390f35b3480156102a5575f80fd5b506102ae610e7b565b6040516102bb9190611fd2565b60405180910390f35b3480156102cf575f80fd5b506102d8610e8e565b005b3480156102e5575f80fd5b506102ee610f3f565b6040516102fb9190612072565b60405180910390f35b34801561030f575f80fd5b50610318610f65565b6040516103259190611fd2565b60405180910390f35b348015610339575f80fd5b50610342610f78565b60405161034f91906120a6565b60405180910390f35b348015610363575f80fd5b5061036c610f9c565b60405161037991906120d7565b60405180910390f35b34801561038d575f80fd5b506103a860048036038101906103a391906120f0565b610ff8565b005b3480156103b5575f80fd5b506103d060048036038101906103cb919061211b565b611005565b6040516103dd9190611ffa565b60405180910390f35b3480156103f1575f80fd5b506103fa61101a565b005b348015610407575f80fd5b5061041061102d565b60405161041d9190611fd2565b60405180910390f35b348015610431575f80fd5b5061044c6004803603810190610447919061211b565b61103f565b6040516104599190611ffa565b60405180910390f35b34801561046d575f80fd5b50610476611054565b6040516104839190612072565b60405180910390f35b348015610497575f80fd5b506104b260048036038101906104ad91906120f0565b61107b565b6040516104bf9190612072565b60405180910390f35b3480156104d3575f80fd5b506104dc6110b6565b6040516104e99190611ec9565b60405180910390f35b3480156104fd575f80fd5b50610506611142565b60405161051391906121a1565b60405180910390f35b348015610527575f80fd5b50610542600480360381019061053d9190611f7a565b611167565b60405161054f9190611fd2565b60405180910390f35b348015610563575f80fd5b5061056c61117b565b60405161057991906121da565b60405180910390f35b34801561058d575f80fd5b506105966111a0565b6040516105a39190611ffa565b60405180910390f35b3480156105b7575f80fd5b506105c06111a6565b6040516105cd9190611ffa565b60405180910390f35b3480156105e1575f80fd5b506105fc60048036038101906105f79190612247565b6111ac565b005b348015610609575f80fd5b50610624600480360381019061061f91906122e4565b611499565b6040516106319190611ffa565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b919061211b565b6114b9565b005b34801561066d575f80fd5b506106886004803603810190610683919061211b565b611573565b005b348015610695575f80fd5b5061069e6115f5565b6040516106ab9190612342565b60405180910390f35b3480156106bf575f80fd5b506106c861161a565b005b600180546106d790612388565b80601f016020809104026020016040519081016040528092919081815260200182805461070390612388565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108319190611ffa565b60405180910390a36001905092915050565b60035481565b5f3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146109ab575f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109a957828161092c91906123e5565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b600e60019054906101000a900460ff16610b99576109c7611054565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610a355750610a05611054565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610a8e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ae7575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610b98575f6127106064600354610aff9190612418565b610b099190612486565b9050808360045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b5591906124b6565b1115610b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8d90612559565b60405180910390fd5b505b5b610ba16116cd565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054118015610bf85750600c5f9054906101000a900460ff16155b8015610c51575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610c8957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610c9757610c966116ef565b5b5f610ca38585856119f5565b90505f8184610cb291906123e5565b90508360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d0091906123e5565b925050819055508060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dae9190611ffa565b60405180910390a35f821115610e6e578160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e659190611ffa565b60405180910390a35b6001925050509392505050565b600e60019054906101000a900460ff1681565b610e96611ba3565b600e5f9054906101000a900460ff1615610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc906125c1565b60405180910390fd5b6001600e5f6101000a81548160ff021916908315150217905550610fa0600a81905550610fa0600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60019054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000001281565b5f7f00000000000000000000000000000000000000000000000000000000000000014614610fd157610fcc611c21565b610ff3565b7fcc2cb9e31140820aecb1a94fc528709df23e291c23589ce3977c7291bde07a555b905090565b6110023382611cac565b50565b6004602052805f5260405f205f915090505481565b611022611ba3565b61102b5f611d77565b565b600e5f9054906101000a900460ff1681565b6006602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d818154811061108a575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546110c390612388565b80601f01602080910402602001604051908101604052809291908181526020018280546110ef90612388565b801561113a5780601f106111115761010080835404028352916020019161113a565b820191905f5260205f20905b81548152906001019060200180831161111d57829003601f168201915b505050505081565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611173338484610849565b905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b428410156111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690612629565b60405180910390fd5b5f60016111fa610f9c565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b60405160200161127f96959493929190612647565b604051602081830303815290604052805190602001206040516020016112a692919061271a565b604051602081830303815290604052805190602001208585856040515f81526020016040526040516112db9493929190612750565b6020604051602081039080840390855afa1580156112fb573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561136e57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a4906127dd565b60405180910390fd5b8560055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516114889190611ffa565b60405180910390a350505050505050565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b6114c1611ba3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152690612845565b60405180910390fd5b80600c60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61157b611ba3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906128d3565b60405180910390fd5b6115f281611d77565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611622611ba3565b600e60019054906101000a900460ff1615611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906125c1565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b5f61271060016003546116e09190612418565b6116ea9190612486565b905090565b6001600c5f6101000a81548160ff0219169083151502179055505f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600267ffffffffffffffff811115611766576117656128f1565b5b6040519080825280602002602001820160405280156117945781602001602082028036833780820191505090505b50905030815f815181106117ab576117aa61291e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611873919061295f565b816001815181106118875761188661291e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611923959493929190612a7a565b5f604051808303815f87803b15801561193a575f80fd5b505af115801561194c573d5f803e3d5ffd5b50505050600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161199690612aff565b5f6040518083038185875af1925050503d805f81146119d0576040519150601f19603f3d011682016040523d82523d5f602084013e6119d5565b606091505b50505050505f600c5f6101000a81548160ff021916908315150217905550565b5f6119fe611054565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a695750611a3a611054565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611a9f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611aac575f9050611b9c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b2257612710600a5483611b119190612418565b611b1b9190612486565b9050611b9c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9857612710600b5483611b879190612418565b611b919190612486565b9050611b9c565b5f90505b9392505050565b611bab611e38565b73ffffffffffffffffffffffffffffffffffffffff16611bc9611054565b73ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690612b5d565b60405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611c529190612c0d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611c91959493929190612c23565b60405160208183030381529060405280519060200120905090565b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611cf891906123e5565b925050819055508060035f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6b9190611ffa565b60405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e76578082015181840152602081019050611e5b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e9b82611e3f565b611ea58185611e49565b9350611eb5818560208601611e59565b611ebe81611e81565b840191505092915050565b5f6020820190508181035f830152611ee18184611e91565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f1682611eed565b9050919050565b611f2681611f0c565b8114611f30575f80fd5b50565b5f81359050611f4181611f1d565b92915050565b5f819050919050565b611f5981611f47565b8114611f63575f80fd5b50565b5f81359050611f7481611f50565b92915050565b5f8060408385031215611f9057611f8f611ee9565b5b5f611f9d85828601611f33565b9250506020611fae85828601611f66565b9150509250929050565b5f8115159050919050565b611fcc81611fb8565b82525050565b5f602082019050611fe55f830184611fc3565b92915050565b611ff481611f47565b82525050565b5f60208201905061200d5f830184611feb565b92915050565b5f805f6060848603121561202a57612029611ee9565b5b5f61203786828701611f33565b935050602061204886828701611f33565b925050604061205986828701611f66565b9150509250925092565b61206c81611f0c565b82525050565b5f6020820190506120855f830184612063565b92915050565b5f60ff82169050919050565b6120a08161208b565b82525050565b5f6020820190506120b95f830184612097565b92915050565b5f819050919050565b6120d1816120bf565b82525050565b5f6020820190506120ea5f8301846120c8565b92915050565b5f6020828403121561210557612104611ee9565b5b5f61211284828501611f66565b91505092915050565b5f602082840312156121305761212f611ee9565b5b5f61213d84828501611f33565b91505092915050565b5f819050919050565b5f61216961216461215f84611eed565b612146565b611eed565b9050919050565b5f61217a8261214f565b9050919050565b5f61218b82612170565b9050919050565b61219b81612181565b82525050565b5f6020820190506121b45f830184612192565b92915050565b5f6121c482612170565b9050919050565b6121d4816121ba565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b6121fc8161208b565b8114612206575f80fd5b50565b5f81359050612217816121f3565b92915050565b612226816120bf565b8114612230575f80fd5b50565b5f813590506122418161221d565b92915050565b5f805f805f805f60e0888a03121561226257612261611ee9565b5b5f61226f8a828b01611f33565b97505060206122808a828b01611f33565b96505060406122918a828b01611f66565b95505060606122a28a828b01611f66565b94505060806122b38a828b01612209565b93505060a06122c48a828b01612233565b92505060c06122d58a828b01612233565b91505092959891949750929550565b5f80604083850312156122fa576122f9611ee9565b5b5f61230785828601611f33565b925050602061231885828601611f33565b9150509250929050565b5f61232c82612170565b9050919050565b61233c81612322565b82525050565b5f6020820190506123555f830184612333565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061239f57607f821691505b6020821081036123b2576123b161235b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6123ef82611f47565b91506123fa83611f47565b9250828203905081811115612412576124116123b8565b5b92915050565b5f61242282611f47565b915061242d83611f47565b925082820261243b81611f47565b91508282048414831517612452576124516123b8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61249082611f47565b915061249b83611f47565b9250826124ab576124aa612459565b5b828204905092915050565b5f6124c082611f47565b91506124cb83611f47565b92508282019050808211156124e3576124e26123b8565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d755f8201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b5f612543602983611e49565b915061254e826124e9565b604082019050919050565b5f6020820190508181035f83015261257081612537565b9050919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e00000000005f82015250565b5f6125ab601b83611e49565b91506125b682612577565b602082019050919050565b5f6020820190508181035f8301526125d88161259f565b9050919050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f612613601783611e49565b915061261e826125df565b602082019050919050565b5f6020820190508181035f83015261264081612607565b9050919050565b5f60c08201905061265a5f8301896120c8565b6126676020830188612063565b6126746040830187612063565b6126816060830186611feb565b61268e6080830185611feb565b61269b60a0830184611feb565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6126e46002836126a6565b91506126ef826126b0565b600282019050919050565b5f819050919050565b61271461270f826120bf565b6126fa565b82525050565b5f612724826126d8565b91506127308285612703565b6020820191506127408284612703565b6020820191508190509392505050565b5f6080820190506127635f8301876120c8565b6127706020830186612097565b61277d60408301856120c8565b61278a60608301846120c8565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6127c7600e83611e49565b91506127d282612793565b602082019050919050565b5f6020820190508181035f8301526127f4816127bb565b9050919050565b7f6e756c6c206164647265737300000000000000000000000000000000000000005f82015250565b5f61282f600c83611e49565b915061283a826127fb565b602082019050919050565b5f6020820190508181035f83015261285c81612823565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6128bd602683611e49565b91506128c882612863565b604082019050919050565b5f6020820190508181035f8301526128ea816128b1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061295981611f1d565b92915050565b5f6020828403121561297457612973611ee9565b5b5f6129818482850161294b565b91505092915050565b5f819050919050565b5f6129ad6129a86129a38461298a565b612146565b611f47565b9050919050565b6129bd81612993565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129f581611f0c565b82525050565b5f612a0683836129ec565b60208301905092915050565b5f602082019050919050565b5f612a28826129c3565b612a3281856129cd565b9350612a3d836129dd565b805f5b83811015612a6d578151612a5488826129fb565b9750612a5f83612a12565b925050600181019050612a40565b5085935050505092915050565b5f60a082019050612a8d5f830188611feb565b612a9a60208301876129b4565b8181036040830152612aac8186612a1e565b9050612abb6060830185612063565b612ac86080830184611feb565b9695505050505050565b5f81905092915050565b50565b5f612aea5f83612ad2565b9150612af582612adc565b5f82019050919050565b5f612b0982612adf565b9150819050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b47602083611e49565b9150612b5282612b13565b602082019050919050565b5f6020820190508181035f830152612b7481612b3b565b9050919050565b5f819050815f5260205f209050919050565b5f8154612b9981612388565b612ba38186612ad2565b9450600182165f8114612bbd5760018114612bd257612c04565b60ff1983168652811515820286019350612c04565b612bdb85612b7b565b5f5b83811015612bfc57815481890152600182019150602081019050612bdd565b838801955050505b50505092915050565b5f612c188284612b8d565b915081905092915050565b5f60a082019050612c365f8301886120c8565b612c4360208301876120c8565b612c5060408301866120c8565b612c5d6060830185611feb565b612c6a6080830184612063565b969550505050505056fea26469706673582212203e92414c0b4cfa5f64d4f36a365e47a3e47f2261b063d9ba90bcd13b5bbc2e8364736f6c63430008180033

Deployed Bytecode Sourcemap

20887:6314:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3529:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5006:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3812:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25594:1604;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21448:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22644:233;;;;;;;;;;;;;:::i;:::-;;21355:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21324:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3585:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7966:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22431:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3847:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12105:103;;;;;;;;;;;;;:::i;:::-;;21418:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4273:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11457:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21386:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3556:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21016:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25014:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20977:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21118:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21152:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3900:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23134:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12363:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20938:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22885:241;;;;;;;;;;;;;:::i;:::-;;3529:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5006:217::-;5080:4;5130:6;5097:9;:21;5107:10;5097:21;;;;;;;;;;;;;;;:30;5119:7;5097:30;;;;;;;;;;;;;;;:39;;;;5175:7;5154:37;;5163:10;5154:37;;;5184:6;5154:37;;;;;;:::i;:::-;;;;;;;;5211:4;5204:11;;5006:217;;;;:::o;3812:26::-;;;;:::o;25594:1604::-;25714:4;25743:10;25735:18;;:4;:18;;;25731:272;;25819:12;25834:9;:15;25844:4;25834:15;;;;;;;;;;;;;;;:27;25850:10;25834:27;;;;;;;;;;;;;;;;25819:42;;25929:14;25918:7;:25;25914:77;;25985:6;25975:7;:16;;;;:::i;:::-;25945:9;:15;25955:4;25945:15;;;;;;;;;;;;;;;:27;25961:10;25945:27;;;;;;;;;;;;;;;:46;;;;25914:77;25755:248;25731:272;26023:14;;;;;;;;;;;26019:321;;26062:7;:5;:7::i;:::-;26056:13;;:2;:13;;;;:32;;;;;26081:7;:5;:7::i;:::-;26073:15;;:4;:15;;;;26056:32;:57;;;;;26106:6;;;;;;;;;;;26092:21;;:2;:21;;;;26056:57;:80;;;;;26131:4;;;;;;;;;;;26117:19;;:2;:19;;;;26056:80;26053:276;;;26156:18;26199:5;26192:3;26178:11;;:17;;;;:::i;:::-;26177:27;;;;:::i;:::-;26156:48;;26257:10;26247:6;26231:9;:13;26241:2;26231:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:36;;26223:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;26137:192;26053:276;26019:321;26385:18;:16;:18::i;:::-;26358:9;:24;26376:4;26358:24;;;;;;;;;;;;;;;;:45;:73;;;;;26408:23;;;;;;;;;;;26407:24;26358:73;:98;;;;;26451:4;;;;;;;;;;;26435:21;;:4;:21;;;;26358:98;:123;;;;;26476:4;26460:21;;:4;:21;;;;26358:123;26354:176;;;26498:20;:18;:20::i;:::-;26354:176;26542:8;26553:25;26561:4;26567:2;26571:6;26553:7;:25::i;:::-;26542:36;;26589:19;26620:3;26611:6;:12;;;;:::i;:::-;26589:34;;26655:6;26636:9;:15;26646:4;26636:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;26826:14;26809:9;:13;26819:2;26809:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;26884:2;26869:34;;26878:4;26869:34;;;26888:14;26869:34;;;;;;:::i;:::-;;;;;;;;26926:1;26920:3;:7;26916:251;;;27015:3;26987:9;:24;27005:4;26987:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;27144:4;27121:34;;27130:4;27121:34;;;27151:3;27121:34;;;;;;:::i;:::-;;;;;;;;26916:251;27186:4;27179:11;;;;25594:1604;;;;;:::o;21448:26::-;;;;;;;;;;;;;:::o;22644:233::-;11343:13;:11;:13::i;:::-;22710:11:::1;;;;;;;;;;;22709:12;22701:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;22778:4;22764:11;;:18;;;;;;;;;;;;;;;;;;22805:4;22793:9;:16;;;;22833:4;22820:10;:17;;;;22853:16;;;;;;;;;;22644:233::o:0;21355:24::-;;;;;;;;;;;;;:::o;21324:22::-;;;;;;;;;;;;;:::o;3585:31::-;;;:::o;7966:179::-;8023:7;8067:16;8050:13;:33;:87;;8113:24;:22;:24::i;:::-;8050:87;;;8086:24;8050:87;8043:94;;7966:179;:::o;22431:80::-;22478:25;22484:10;22496:6;22478:5;:25::i;:::-;22431:80;:::o;3847:44::-;;;;;;;;;;;;;;;;;:::o;12105:103::-;11343:13;:11;:13::i;:::-;12170:30:::1;12197:1;12170:18;:30::i;:::-;12105:103::o:0;21418:23::-;;;;;;;;;;;;;:::o;4273:41::-;;;;;;;;;;;;;;;;;:::o;11457:87::-;11503:7;11530:6;;;;;;;;;;;11523:13;;11457:87;:::o;21386:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3556:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21016:26::-;;;;;;;;;;;;;:::o;25014:136::-;25082:4;25106:36;25119:10;25131:2;25135:6;25106:12;:36::i;:::-;25099:43;;25014:136;;;;:::o;20977:32::-;;;;;;;;;;;;;:::o;21118:27::-;;;;:::o;21152:28::-;;;;:::o;6431:1527::-;6659:15;6647:8;:27;;6639:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6872:24;6899:827;7039:18;:16;:18::i;:::-;7169:167;7371:5;7411:7;7453:5;7493:6;:13;7500:5;7493:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;7543:8;7124:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7084:525;;;;;;6959:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6927:724;;;;;;7670:1;7690;7710;6899:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6872:854;;7779:1;7751:30;;:16;:30;;;;:59;;;;;7805:5;7785:25;;:16;:25;;;7751:59;7743:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;7885:5;7846:9;:27;7856:16;7846:27;;;;;;;;;;;;;;;:36;7874:7;7846:36;;;;;;;;;;;;;;;:44;;;;6847:1055;7935:7;7919:31;;7928:5;7919:31;;;7944:5;7919:31;;;;;;:::i;:::-;;;;;;;;6431:1527;;;;;;;:::o;3900:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23134:148::-;11343:13;:11;:13::i;:::-;23226:1:::1;23208:20;;:6;:20;;::::0;23200:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23268:6;23256:9;;:18;;;;;;;;;;;;;;;;;;23134:148:::0;:::o;12363:201::-;11343:13;:11;:13::i;:::-;12472:1:::1;12452:22;;:8;:22;;::::0;12444:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12528:28;12547:8;12528:18;:28::i;:::-;12363:201:::0;:::o;20938:32::-;;;;;;;;;;;;;:::o;22885:241::-;11343:13;:11;:13::i;:::-;22952:14:::1;;;;;;;;;;;22951:15;22943:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;23026:4;23009:14;;:21;;;;;;;;;;;;;;;;;;23053:3;23041:9;:15;;;;23080:3;23067:10;:16;;;;23099:19;;;;;;;;;;22885:241::o:0;22519:117::-;22570:4;22614:5;22609:1;22595:11;;:15;;;;:::i;:::-;22594:25;;;;:::i;:::-;22587:32;;22519:117;:::o;24269:516::-;22282:4;22256:23;;:30;;;;;;;;;;;;;;;;;;24333:17:::1;24353:9;:24;24371:4;24353:24;;;;;;;;;;;;;;;;24333:44;;24407:21;24445:1;24431:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24407:40;;24476:4;24458;24463:1;24458:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24502:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24492:4;24497:1;24492:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24528:6;;;;;;;;;;;:57;;;24600:12;24627:1;24643:4;24670;24690:15;24528:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24729:9;;;;;;;;;;;:14;;24751:21;24729:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24320:465;;22335:5:::0;22309:23;;:31;;;;;;;;;;;;;;;;;;24269:516::o;23553:636::-;23632:4;23661:7;:5;:7::i;:::-;23653:15;;:4;:15;;;:32;;;;23678:7;:5;:7::i;:::-;23672:13;;:2;:13;;;23653:32;:57;;;;23705:4;23689:21;;:4;:21;;;23653:57;23649:533;;;23870:1;23863:8;;;;23649:533;23909:4;;;;;;;;;;;23893:21;;:4;:21;;;23889:293;;23961:6;23949:9;;23940:6;:18;;;;:::i;:::-;:27;;;;:::i;:::-;23933:34;;;;23889:293;24003:4;;;;;;;;;;;23989:19;;:2;:19;;;23985:197;;24056:6;24043:10;;24034:6;:19;;;;:::i;:::-;:28;;;;:::i;:::-;24027:35;;;;23985:197;24169:1;24162:8;;23553:636;;;;;;:::o;11622:132::-;11697:12;:10;:12::i;:::-;11686:23;;:7;:5;:7::i;:::-;:23;;;11678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11622:132::o;8153:457::-;8218:7;8319:95;8453:4;8437:22;;;;;;:::i;:::-;;;;;;;;8482:14;8519:13;8563:4;8286:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8258:344;;;;;;8238:364;;8153:457;:::o;9153:338::-;9245:6;9226:9;:15;9236:4;9226:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;9414:6;9399:11;;:21;;;;;;;;;;;9472:1;9449:34;;9458:4;9449:34;;;9476:6;9449:34;;;;;;:::i;:::-;;;;;;;;9153:338;;:::o;12724:191::-;12798:16;12817:6;;;;;;;;;;;12798:25;;12843:8;12834:6;;:17;;;;;;;;;;;;;;;;;;12898:8;12867:40;;12888:8;12867:40;;;;;;;;;;;;12787:128;12724:191;:::o;10166:98::-;10219:7;10246:10;10239:17;;10166:98;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:86::-;4810:7;4850:4;4843:5;4839:16;4828:27;;4775:86;;;:::o;4867:112::-;4950:22;4966:5;4950:22;:::i;:::-;4945:3;4938:35;4867:112;;:::o;4985:214::-;5074:4;5112:2;5101:9;5097:18;5089:26;;5125:67;5189:1;5178:9;5174:17;5165:6;5125:67;:::i;:::-;4985:214;;;;:::o;5205:77::-;5242:7;5271:5;5260:16;;5205:77;;;:::o;5288:118::-;5375:24;5393:5;5375:24;:::i;:::-;5370:3;5363:37;5288:118;;:::o;5412:222::-;5505:4;5543:2;5532:9;5528:18;5520:26;;5556:71;5624:1;5613:9;5609:17;5600:6;5556:71;:::i;:::-;5412:222;;;;:::o;5640:329::-;5699:6;5748:2;5736:9;5727:7;5723:23;5719:32;5716:119;;;5754:79;;:::i;:::-;5716:119;5874:1;5899:53;5944:7;5935:6;5924:9;5920:22;5899:53;:::i;:::-;5889:63;;5845:117;5640:329;;;;:::o;5975:::-;6034:6;6083:2;6071:9;6062:7;6058:23;6054:32;6051:119;;;6089:79;;:::i;:::-;6051:119;6209:1;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6180:117;5975:329;;;;:::o;6310:60::-;6338:3;6359:5;6352:12;;6310:60;;;:::o;6376:142::-;6426:9;6459:53;6477:34;6486:24;6504:5;6486:24;:::i;:::-;6477:34;:::i;:::-;6459:53;:::i;:::-;6446:66;;6376:142;;;:::o;6524:126::-;6574:9;6607:37;6638:5;6607:37;:::i;:::-;6594:50;;6524:126;;;:::o;6656:148::-;6728:9;6761:37;6792:5;6761:37;:::i;:::-;6748:50;;6656:148;;;:::o;6810:175::-;6919:59;6972:5;6919:59;:::i;:::-;6914:3;6907:72;6810:175;;:::o;6991:266::-;7106:4;7144:2;7133:9;7129:18;7121:26;;7157:93;7247:1;7236:9;7232:17;7223:6;7157:93;:::i;:::-;6991:266;;;;:::o;7263:151::-;7338:9;7371:37;7402:5;7371:37;:::i;:::-;7358:50;;7263:151;;;:::o;7420:181::-;7532:62;7588:5;7532:62;:::i;:::-;7527:3;7520:75;7420:181;;:::o;7607:272::-;7725:4;7763:2;7752:9;7748:18;7740:26;;7776:96;7869:1;7858:9;7854:17;7845:6;7776:96;:::i;:::-;7607:272;;;;:::o;7885:118::-;7956:22;7972:5;7956:22;:::i;:::-;7949:5;7946:33;7936:61;;7993:1;7990;7983:12;7936:61;7885:118;:::o;8009:135::-;8053:5;8091:6;8078:20;8069:29;;8107:31;8132:5;8107:31;:::i;:::-;8009:135;;;;:::o;8150:122::-;8223:24;8241:5;8223:24;:::i;:::-;8216:5;8213:35;8203:63;;8262:1;8259;8252:12;8203:63;8150:122;:::o;8278:139::-;8324:5;8362:6;8349:20;8340:29;;8378:33;8405:5;8378:33;:::i;:::-;8278:139;;;;:::o;8423:1199::-;8534:6;8542;8550;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8758:1;8783:53;8828:7;8819:6;8808:9;8804:22;8783:53;:::i;:::-;8773:63;;8729:117;8885:2;8911:53;8956:7;8947:6;8936:9;8932:22;8911:53;:::i;:::-;8901:63;;8856:118;9013:2;9039:53;9084:7;9075:6;9064:9;9060:22;9039:53;:::i;:::-;9029:63;;8984:118;9141:2;9167:53;9212:7;9203:6;9192:9;9188:22;9167:53;:::i;:::-;9157:63;;9112:118;9269:3;9296:51;9339:7;9330:6;9319:9;9315:22;9296:51;:::i;:::-;9286:61;;9240:117;9396:3;9423:53;9468:7;9459:6;9448:9;9444:22;9423:53;:::i;:::-;9413:63;;9367:119;9525:3;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9496:119;8423:1199;;;;;;;;;;:::o;9628:474::-;9696:6;9704;9753:2;9741:9;9732:7;9728:23;9724:32;9721:119;;;9759:79;;:::i;:::-;9721:119;9879:1;9904:53;9949:7;9940:6;9929:9;9925:22;9904:53;:::i;:::-;9894:63;;9850:117;10006:2;10032:53;10077:7;10068:6;10057:9;10053:22;10032:53;:::i;:::-;10022:63;;9977:118;9628:474;;;;;:::o;10108:153::-;10185:9;10218:37;10249:5;10218:37;:::i;:::-;10205:50;;10108:153;;;:::o;10267:185::-;10381:64;10439:5;10381:64;:::i;:::-;10376:3;10369:77;10267:185;;:::o;10458:276::-;10578:4;10616:2;10605:9;10601:18;10593:26;;10629:98;10724:1;10713:9;10709:17;10700:6;10629:98;:::i;:::-;10458:276;;;;:::o;10740:180::-;10788:77;10785:1;10778:88;10885:4;10882:1;10875:15;10909:4;10906:1;10899:15;10926:320;10970:6;11007:1;11001:4;10997:12;10987:22;;11054:1;11048:4;11044:12;11075:18;11065:81;;11131:4;11123:6;11119:17;11109:27;;11065:81;11193:2;11185:6;11182:14;11162:18;11159:38;11156:84;;11212:18;;:::i;:::-;11156:84;10977:269;10926:320;;;:::o;11252:180::-;11300:77;11297:1;11290:88;11397:4;11394:1;11387:15;11421:4;11418:1;11411:15;11438:194;11478:4;11498:20;11516:1;11498:20;:::i;:::-;11493:25;;11532:20;11550:1;11532:20;:::i;:::-;11527:25;;11576:1;11573;11569:9;11561:17;;11600:1;11594:4;11591:11;11588:37;;;11605:18;;:::i;:::-;11588:37;11438:194;;;;:::o;11638:410::-;11678:7;11701:20;11719:1;11701:20;:::i;:::-;11696:25;;11735:20;11753:1;11735:20;:::i;:::-;11730:25;;11790:1;11787;11783:9;11812:30;11830:11;11812:30;:::i;:::-;11801:41;;11991:1;11982:7;11978:15;11975:1;11972:22;11952:1;11945:9;11925:83;11902:139;;12021:18;;:::i;:::-;11902:139;11686:362;11638:410;;;;:::o;12054:180::-;12102:77;12099:1;12092:88;12199:4;12196:1;12189:15;12223:4;12220:1;12213:15;12240:185;12280:1;12297:20;12315:1;12297:20;:::i;:::-;12292:25;;12331:20;12349:1;12331:20;:::i;:::-;12326:25;;12370:1;12360:35;;12375:18;;:::i;:::-;12360:35;12417:1;12414;12410:9;12405:14;;12240:185;;;;:::o;12431:191::-;12471:3;12490:20;12508:1;12490:20;:::i;:::-;12485:25;;12524:20;12542:1;12524:20;:::i;:::-;12519:25;;12567:1;12564;12560:9;12553:16;;12588:3;12585:1;12582:10;12579:36;;;12595:18;;:::i;:::-;12579:36;12431:191;;;;:::o;12628:228::-;12768:34;12764:1;12756:6;12752:14;12745:58;12837:11;12832:2;12824:6;12820:15;12813:36;12628:228;:::o;12862:366::-;13004:3;13025:67;13089:2;13084:3;13025:67;:::i;:::-;13018:74;;13101:93;13190:3;13101:93;:::i;:::-;13219:2;13214:3;13210:12;13203:19;;12862:366;;;:::o;13234:419::-;13400:4;13438:2;13427:9;13423:18;13415:26;;13487:9;13481:4;13477:20;13473:1;13462:9;13458:17;13451:47;13515:131;13641:4;13515:131;:::i;:::-;13507:139;;13234:419;;;:::o;13659:177::-;13799:29;13795:1;13787:6;13783:14;13776:53;13659:177;:::o;13842:366::-;13984:3;14005:67;14069:2;14064:3;14005:67;:::i;:::-;13998:74;;14081:93;14170:3;14081:93;:::i;:::-;14199:2;14194:3;14190:12;14183:19;;13842:366;;;:::o;14214:419::-;14380:4;14418:2;14407:9;14403:18;14395:26;;14467:9;14461:4;14457:20;14453:1;14442:9;14438:17;14431:47;14495:131;14621:4;14495:131;:::i;:::-;14487:139;;14214:419;;;:::o;14639:173::-;14779:25;14775:1;14767:6;14763:14;14756:49;14639:173;:::o;14818:366::-;14960:3;14981:67;15045:2;15040:3;14981:67;:::i;:::-;14974:74;;15057:93;15146:3;15057:93;:::i;:::-;15175:2;15170:3;15166:12;15159:19;;14818:366;;;:::o;15190:419::-;15356:4;15394:2;15383:9;15379:18;15371:26;;15443:9;15437:4;15433:20;15429:1;15418:9;15414:17;15407:47;15471:131;15597:4;15471:131;:::i;:::-;15463:139;;15190:419;;;:::o;15615:775::-;15848:4;15886:3;15875:9;15871:19;15863:27;;15900:71;15968:1;15957:9;15953:17;15944:6;15900:71;:::i;:::-;15981:72;16049:2;16038:9;16034:18;16025:6;15981:72;:::i;:::-;16063;16131:2;16120:9;16116:18;16107:6;16063:72;:::i;:::-;16145;16213:2;16202:9;16198:18;16189:6;16145:72;:::i;:::-;16227:73;16295:3;16284:9;16280:19;16271:6;16227:73;:::i;:::-;16310;16378:3;16367:9;16363:19;16354:6;16310:73;:::i;:::-;15615:775;;;;;;;;;:::o;16396:148::-;16498:11;16535:3;16520:18;;16396:148;;;;:::o;16550:214::-;16690:66;16686:1;16678:6;16674:14;16667:90;16550:214;:::o;16770:400::-;16930:3;16951:84;17033:1;17028:3;16951:84;:::i;:::-;16944:91;;17044:93;17133:3;17044:93;:::i;:::-;17162:1;17157:3;17153:11;17146:18;;16770:400;;;:::o;17176:79::-;17215:7;17244:5;17233:16;;17176:79;;;:::o;17261:157::-;17366:45;17386:24;17404:5;17386:24;:::i;:::-;17366:45;:::i;:::-;17361:3;17354:58;17261:157;;:::o;17424:663::-;17665:3;17687:148;17831:3;17687:148;:::i;:::-;17680:155;;17845:75;17916:3;17907:6;17845:75;:::i;:::-;17945:2;17940:3;17936:12;17929:19;;17958:75;18029:3;18020:6;17958:75;:::i;:::-;18058:2;18053:3;18049:12;18042:19;;18078:3;18071:10;;17424:663;;;;;:::o;18093:545::-;18266:4;18304:3;18293:9;18289:19;18281:27;;18318:71;18386:1;18375:9;18371:17;18362:6;18318:71;:::i;:::-;18399:68;18463:2;18452:9;18448:18;18439:6;18399:68;:::i;:::-;18477:72;18545:2;18534:9;18530:18;18521:6;18477:72;:::i;:::-;18559;18627:2;18616:9;18612:18;18603:6;18559:72;:::i;:::-;18093:545;;;;;;;:::o;18644:164::-;18784:16;18780:1;18772:6;18768:14;18761:40;18644:164;:::o;18814:366::-;18956:3;18977:67;19041:2;19036:3;18977:67;:::i;:::-;18970:74;;19053:93;19142:3;19053:93;:::i;:::-;19171:2;19166:3;19162:12;19155:19;;18814:366;;;:::o;19186:419::-;19352:4;19390:2;19379:9;19375:18;19367:26;;19439:9;19433:4;19429:20;19425:1;19414:9;19410:17;19403:47;19467:131;19593:4;19467:131;:::i;:::-;19459:139;;19186:419;;;:::o;19611:162::-;19751:14;19747:1;19739:6;19735:14;19728:38;19611:162;:::o;19779:366::-;19921:3;19942:67;20006:2;20001:3;19942:67;:::i;:::-;19935:74;;20018:93;20107:3;20018:93;:::i;:::-;20136:2;20131:3;20127:12;20120:19;;19779:366;;;:::o;20151:419::-;20317:4;20355:2;20344:9;20340:18;20332:26;;20404:9;20398:4;20394:20;20390:1;20379:9;20375:17;20368:47;20432:131;20558:4;20432:131;:::i;:::-;20424:139;;20151:419;;;:::o;20576:225::-;20716:34;20712:1;20704:6;20700:14;20693:58;20785:8;20780:2;20772:6;20768:15;20761:33;20576:225;:::o;20807:366::-;20949:3;20970:67;21034:2;21029:3;20970:67;:::i;:::-;20963:74;;21046:93;21135:3;21046:93;:::i;:::-;21164:2;21159:3;21155:12;21148:19;;20807:366;;;:::o;21179:419::-;21345:4;21383:2;21372:9;21368:18;21360:26;;21432:9;21426:4;21422:20;21418:1;21407:9;21403:17;21396:47;21460:131;21586:4;21460:131;:::i;:::-;21452:139;;21179:419;;;:::o;21604:180::-;21652:77;21649:1;21642:88;21749:4;21746:1;21739:15;21773:4;21770:1;21763:15;21790:180;21838:77;21835:1;21828:88;21935:4;21932:1;21925:15;21959:4;21956:1;21949:15;21976:143;22033:5;22064:6;22058:13;22049:22;;22080:33;22107:5;22080:33;:::i;:::-;21976:143;;;;:::o;22125:351::-;22195:6;22244:2;22232:9;22223:7;22219:23;22215:32;22212:119;;;22250:79;;:::i;:::-;22212:119;22370:1;22395:64;22451:7;22442:6;22431:9;22427:22;22395:64;:::i;:::-;22385:74;;22341:128;22125:351;;;;:::o;22482:85::-;22527:7;22556:5;22545:16;;22482:85;;;:::o;22573:158::-;22631:9;22664:61;22682:42;22691:32;22717:5;22691:32;:::i;:::-;22682:42;:::i;:::-;22664:61;:::i;:::-;22651:74;;22573:158;;;:::o;22737:147::-;22832:45;22871:5;22832:45;:::i;:::-;22827:3;22820:58;22737:147;;:::o;22890:114::-;22957:6;22991:5;22985:12;22975:22;;22890:114;;;:::o;23010:184::-;23109:11;23143:6;23138:3;23131:19;23183:4;23178:3;23174:14;23159:29;;23010:184;;;;:::o;23200:132::-;23267:4;23290:3;23282:11;;23320:4;23315:3;23311:14;23303:22;;23200:132;;;:::o;23338:108::-;23415:24;23433:5;23415:24;:::i;:::-;23410:3;23403:37;23338:108;;:::o;23452:179::-;23521:10;23542:46;23584:3;23576:6;23542:46;:::i;:::-;23620:4;23615:3;23611:14;23597:28;;23452:179;;;;:::o;23637:113::-;23707:4;23739;23734:3;23730:14;23722:22;;23637:113;;;:::o;23786:732::-;23905:3;23934:54;23982:5;23934:54;:::i;:::-;24004:86;24083:6;24078:3;24004:86;:::i;:::-;23997:93;;24114:56;24164:5;24114:56;:::i;:::-;24193:7;24224:1;24209:284;24234:6;24231:1;24228:13;24209:284;;;24310:6;24304:13;24337:63;24396:3;24381:13;24337:63;:::i;:::-;24330:70;;24423:60;24476:6;24423:60;:::i;:::-;24413:70;;24269:224;24256:1;24253;24249:9;24244:14;;24209:284;;;24213:14;24509:3;24502:10;;23910:608;;;23786:732;;;;:::o;24524:831::-;24787:4;24825:3;24814:9;24810:19;24802:27;;24839:71;24907:1;24896:9;24892:17;24883:6;24839:71;:::i;:::-;24920:80;24996:2;24985:9;24981:18;24972:6;24920:80;:::i;:::-;25047:9;25041:4;25037:20;25032:2;25021:9;25017:18;25010:48;25075:108;25178:4;25169:6;25075:108;:::i;:::-;25067:116;;25193:72;25261:2;25250:9;25246:18;25237:6;25193:72;:::i;:::-;25275:73;25343:3;25332:9;25328:19;25319:6;25275:73;:::i;:::-;24524:831;;;;;;;;:::o;25361:147::-;25462:11;25499:3;25484:18;;25361:147;;;;:::o;25514:114::-;;:::o;25634:398::-;25793:3;25814:83;25895:1;25890:3;25814:83;:::i;:::-;25807:90;;25906:93;25995:3;25906:93;:::i;:::-;26024:1;26019:3;26015:11;26008:18;;25634:398;;;:::o;26038:379::-;26222:3;26244:147;26387:3;26244:147;:::i;:::-;26237:154;;26408:3;26401:10;;26038:379;;;:::o;26423:182::-;26563:34;26559:1;26551:6;26547:14;26540:58;26423:182;:::o;26611:366::-;26753:3;26774:67;26838:2;26833:3;26774:67;:::i;:::-;26767:74;;26850:93;26939:3;26850:93;:::i;:::-;26968:2;26963:3;26959:12;26952:19;;26611:366;;;:::o;26983:419::-;27149:4;27187:2;27176:9;27172:18;27164:26;;27236:9;27230:4;27226:20;27222:1;27211:9;27207:17;27200:47;27264:131;27390:4;27264:131;:::i;:::-;27256:139;;26983:419;;;:::o;27408:144::-;27460:4;27483:3;27475:11;;27506:3;27503:1;27496:14;27540:4;27537:1;27527:18;27519:26;;27408:144;;;:::o;27580:878::-;27685:3;27722:5;27716:12;27751:36;27777:9;27751:36;:::i;:::-;27803:88;27884:6;27879:3;27803:88;:::i;:::-;27796:95;;27922:1;27911:9;27907:17;27938:1;27933:166;;;;28113:1;28108:344;;;;27900:552;;27933:166;28017:4;28013:9;28002;27998:25;27993:3;27986:38;28079:6;28072:14;28065:22;28057:6;28053:35;28048:3;28044:45;28037:52;;27933:166;;28108:344;28175:41;28210:5;28175:41;:::i;:::-;28238:1;28252:154;28266:6;28263:1;28260:13;28252:154;;;28340:7;28334:14;28330:1;28325:3;28321:11;28314:35;28390:1;28381:7;28377:15;28366:26;;28288:4;28285:1;28281:12;28276:17;;28252:154;;;28435:6;28430:3;28426:16;28419:23;;28115:337;;27900:552;;27689:769;;27580:878;;;;:::o;28464:273::-;28595:3;28617:94;28707:3;28698:6;28617:94;:::i;:::-;28610:101;;28728:3;28721:10;;28464:273;;;;:::o;28743:664::-;28948:4;28986:3;28975:9;28971:19;28963:27;;29000:71;29068:1;29057:9;29053:17;29044:6;29000:71;:::i;:::-;29081:72;29149:2;29138:9;29134:18;29125:6;29081:72;:::i;:::-;29163;29231:2;29220:9;29216:18;29207:6;29163:72;:::i;:::-;29245;29313:2;29302:9;29298:18;29289:6;29245:72;:::i;:::-;29327:73;29395:3;29384:9;29380:19;29371:6;29327:73;:::i;:::-;28743:664;;;;;;;;:::o

Swarm Source

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