ETH Price: $2,681.19 (+1.66%)

Token

Gas Utility Token (GAS)
 

Overview

Max Total Supply

100,000,000 GAS

Holders

32

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
GasUtilityToken

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-02-05
*/

// SPDX-License-Identifier: MIT
/**
⣿⣿⠛⡋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠭⠤⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣐⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠀⠀⢀⠀⠀⢀⠀⢀⣤⣤⣾⣿⣿⣷⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣶⣶⣦⣦⣢⢀⠀⢀⣠⣴⣶⣶⣿⣷⣶⣤⣆⣤⠐⠄⠈⣴⣿⡿⠹⠟⠀⠀⠚⠛⢻⣷⡆⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⡀⠀⠀⠀⠀⠀⢠⣾⣿⣿⠿⠛⠛⠿⢿⣿⣿⣷⣿⠿⠟⠛⠛⠉⠛⠻⢿⣿⣿⣷⣄⠀⠻⣿⣧⣀⡀⠀⠐⠀⠀⠀⣿⣯⠅⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣼⣀⠤⢀⠀⠀⠀⣾⣿⡟⠀⠀⠀⠀⠀⠀⠈⠛⣿⣷⡂⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣤⠀⠈⣽⣯⠀⠀⠀⡀⠀⠛⢿⡏⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⡿⢻⣿⣀⠀⠂⠀⢠⣿⠿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⡀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⡏⠀⠀⠻⣷⣶⣠⣼⢧⣬⣶⣿⠗⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⣾⣿⠋⠀⠀⢈⣙⣷⣆⠀⢸⣿⣵⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡏⠀⠀⠀⠀⠉⠉⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠿⣿⣱⣴⣷⣼⣿⡿⠏⠀⠀⠘⣿⣆⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣴⣾⣿⣿⣿⣷⣶⣴⣦⡀⠲⠨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⢀⣴⣿⡿⢧⣀⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⢤⣿⣿⠋⠀⠀⢩⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣧⡄⠈⠀⢠⣄⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⣿⣻⡃⠀⠀⠀⠀⢿⣦⣄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣺⠀⣠⣴⣶⣄⡀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢸⣿⣼⠇⠀⠀⠀⠀⠈⢻⣿⣷⣦⣤⣤⣤⣾⡄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⡟⣀⣿⣿⣿⣿⣶⣶⣶⡀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢻⣿⣶⡀⠀⠀⠀⠀⢠⡽⠛⣿⣿⠋⠁⣿⣧⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⠇⢴⣿⣿⢿⡿⠛⠻⣿⣿
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣦⣄⠀⠀⣾⡇⠀⠸⣿⣷⣶⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⠟⠁⢈⣿⢿⡁⠀⠀⠀⠙⢿⣿
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⡟⠿⣿⣯⠋⢀⡀⠈⠈⠉⠉⠻⣿⣿⣶⣤⣄⡀⠀⠀⠀⠀⣠⣠⣴⠿⣿⣿⣿⣷⡄⠀⢿⣿⣦⣀⣴⣆⣤⣿⣿
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡿⠉⠀⣌⠁⠉⠀⢀⣠⡾⠂⠡⠈⠉⠉⠁⠀⠀⠀⠀⠉⠁⠀⠀⠈⠻⣿⣿⣿⠆⠀⠀⠉⠉⠙⢛⣟⠟⠁
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡋⣠⣾⠏⣴⣴⣶⡿⠃⠀⠀⠀⠈⠀⠀⢠⣦⠈⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⡀⠀⠀⠀⠉⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣷⣿⣿⣿⣿⣅⠀⠀⠀⠀⠀⠀⢠⣴⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⠿⠁⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⡿⠟⠀⠘⠻⣿⣷⣀⡀⠀⠀⣀⣾⡟⠋⠛⢿⣿⣶⣤⣤⣤⣴⣾⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠂⠈⠙⢻⡿⡿⠟⠛⠉⠀⠀⠀⠀⠈⠙⢛⢿⠿⠿⠻⠻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡟⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

 *         This contract implements the $GAS token, a complementary asset
 *         designed to support and enhance the $ASS token ecosystem by
 *         automatically swapping $GAS for $ASS, thereby potentially supporting
 *         its price floor. By using this contract, you agree to the terms and
 *         conditions described herein.
 *
 * @dev 
 *  - This version replaces any ETH-swapping logic with direct swaps for $ASS
 *    (address: 0x1BF56759e95D9E85b6927161f6F8DBC4568642bc).
 *  - Ensure you audit and test this thoroughly before mainnet deployment.
 *
 * DISCLAIMER:
 *  - The information contained herein is provided “as is” and without any
 *    representations or warranties, express or implied. The authors, developers,
 *    and contributors shall not be held liable for any damages or losses arising
 *    from the use of this software, including but not limited to direct, indirect,
 *    incidental, or consequential damages.
 *  - This is not financial advice. Conduct your own due diligence and consult
 *    professional advisors before making any investment decisions.
 *  - Token holders and users are solely responsible for compliance with
 *    applicable laws and regulations related to cryptocurrencies and digital
 *    assets.
 *
 * Web: https://ass.financial
 * Twitter/X: https://x.com/assfinancial
 * Telegram: https://t.me/ass_financial
 */

pragma solidity 0.8.25;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender, 
        address recipient, 
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

/**
 * @dev *** IMPORTANT ***
 * This is your $GAS contract with direct swapping for $ASS instead of ETH.
 */
contract GasUtilityToken is Context, IERC20, Ownable {
    using SafeMath for uint256;

    // ========================== NEW: The $ASS token address ==========================
    address public constant ASS_TOKEN = 0x1BF56759e95D9E85b6927161f6F8DBC4568642bc;

    // Balances and allowances
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    // Exile logic (likely an exempt or excluded list)
    mapping (address => bool) private isExile;
    // Identifies whether an address is a marketPair (DEX pair)
    mapping (address => bool) public marketPair;

    // Anti-bot logic
    mapping (uint256 => uint256) private perBuyCount;
    uint256 private firstBlock = 0;

    // Taxes
    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=3;
    uint256 private _reduceBuyTaxAt=23;
    uint256 private _reduceSellTaxAt=23;

    // BUY/SELL counters
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    // -------------------- ADD THIS VARIABLE --------------------
    // Set this to the buy count threshold you want before allowing swaps:
    uint256 private _preventSwapBefore = 10;

    // Basic token info
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Gas Utility Token"; 
    string private constant _symbol = unicode"GAS";

    // Transaction limits
    uint256 public _maxTxAmount =   1_000_000 * 10**_decimals;
    uint256 public _maxWalletSize = 1_000_000 * 10**_decimals;

    // Swap thresholds
    uint256 public _taxSwapThreshold= 1_000_000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1_000_000 * 10**_decimals;

    // Tax wallet (if you still need to collect some ETH or tokens)
    address payable private _taxWallet;

    // Uniswap
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;

    // Trading / swap controls
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    // Sell limit triggers
    uint256 public caSell = 3;
    bool public caTrigger = true;

    event MaxTxAmountUpdated(uint _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;

        isExile[owner()] = true;
        isExile[address(this)] = true;

        // You might exclude the Uniswap pair from certain rules
        // isExile[address(uniswapV2Pair)] = true; // set later after pair creation

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    // -------------------- ERC20 Standard Methods --------------------

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender, 
        address recipient, 
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender, 
            _msgSender(), 
            _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
        );
        return true;
    }

    // Internal approve
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from zero");
        require(spender != address(0), "ERC20: approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    // If you want to designate certain DEX pairs after creation
    function setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    // -------------------- MAIN TRANSFER LOGIC --------------------
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: from zero address");
        require(to != address(0), "ERC20: to zero address");
        require(amount > 0, "Transfer must be > 0");

        uint256 taxAmount = 0;

        // If neither from nor to is the owner...
        if (from != owner() && to != owner()) {
            // Enforce buy/sell taxes
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);

            // First block anti-snipe logic
            if(block.number == firstBlock){
                require(perBuyCount[block.number] < 51, "Exceeds buys on the first block.");
                perBuyCount[block.number]++;
            }

            // BUY
            if (marketPair[from] && to != address(uniswapV2Router) && !isExile[to]) {
                require(amount <= _maxTxAmount, "Exceeds _maxTxAmount");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds maxWalletSize");
                _buyCount++;
            }

            // Normal transfer
            if (!marketPair[to] && !isExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds maxWalletSize");
            }

            // SELL
            if (marketPair[to] && from != address(this)) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            // Transfer between wallets (not a buy/sell)
            if (!marketPair[from] && !marketPair[to] && from != address(this)) {
                taxAmount = 0;
            }

            // -------------------- SWAP LOGIC (now swaps $GAS for $ASS) --------------------
            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                caTrigger && 
                !inSwap && 
                marketPair[to] && 
                swapEnabled && 
                contractTokenBalance > _taxSwapThreshold && 
                _buyCount > _preventSwapBefore // <-- now recognized
            ) {
                // Limit sells per block if needed
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < caSell, "CA balance sell limit");

                // Swap for $ASS
                swapTokensForAss(_min(amount, _min(contractTokenBalance, _maxTaxSwap)));

                // OPTIONAL: Burn or handle the newly acquired $ASS
                _burnAllAssInContract();

                sellCount++;
                lastSellBlock = block.number;
            } 
            else if (
                !inSwap && 
                marketPair[to] && 
                swapEnabled && 
                contractTokenBalance > _taxSwapThreshold && 
                _buyCount > _preventSwapBefore // <-- now recognized
            ) {
                swapTokensForAss(_min(amount, _min(contractTokenBalance, _maxTaxSwap)));
                _burnAllAssInContract();
            }
        }

        // Take Tax
        if(taxAmount > 0){
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        // Transfer the remainder
        _balances[from] = _balances[from].sub(amount);
        _balances[to]   = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    // -------------------- HELPER: get min of two values --------------------
    function _min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }

    // -------------------- NEW FUNCTION: Swap $GAS for $ASS --------------------
    function swapTokensForAss(uint256 tokenAmount) private lockTheSwap {
        require(tokenAmount > 0, "Token amount must be > 0");

        address[] memory path = new address[](3);
        path[0] = address(this);              // $GAS
        path[1] = uniswapV2Router.WETH();     // Intermediate WETH
        path[2] = ASS_TOKEN;                  // $ASS

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

        // We do NOT expect any particular amount of $ASS (set to 0 => accept any output)
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this), // Contract receives the $ASS
            block.timestamp
        );
    }

    // -------------------- OPTIONAL: Burn the $ASS we acquire --------------------
    function _burnAllAssInContract() private {
        uint256 assBalance = IERC20(ASS_TOKEN).balanceOf(address(this));
        if(assBalance > 0) {
            // Example: Transfer to 0xdead (burn address)
            IERC20(ASS_TOKEN).transfer(
                0x000000000000000000000000000000000000dEaD,
                assBalance
            );
        }
    }

    // -------------------- Various Owner/Admin Functions --------------------

    function setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwap = amount;
    }
    function setcaSell(uint256 amount) external onlyOwner {
        caSell = amount;
    }
    function setcaTrigger(bool _status) external onlyOwner {
        caTrigger = _status;
    }

    // If you still want to rescue stray ETH
    function rescueETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function rescueERC20tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function setFeeWallet(address newTaxWallet) external onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

    // Removes transaction/hold limits
    function isNotRestricted() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    // -------------------- TRADING ENABLE --------------------
    function enableTrading() external onlyOwner() {
        require(!tradingOpen, "trading already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // Uniswap mainnet router
        );

        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());

        marketPair[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;

        // Add liquidity (if you’re sending tokens & ETH from the contract)
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ASS_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caTrigger","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcaSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setcaTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6006556017600755601760085560026009556003600a556017600b556017600c555f600d555f600e555f600f55600a6010556009600a610045919061055e565b620f424061005391906105a8565b6011556009600a610064919061055e565b620f424061007291906105a8565b6012556009600a610083919061055e565b620f424061009191906105a8565b6013556009600a6100a2919061055e565b620f42406100b091906105a8565b6014555f601760156101000a81548160ff0219169083151502179055505f601760166101000a81548160ff0219169083151502179055506003601855600160195f6101000a81548160ff021916908315150217905550348015610111575f80fd5b505f6101216103bf60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101cb6103bf60201b60201c565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a610218919061055e565b6305f5e10061022791906105a8565b60015f6102386103bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102886103c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061033a6103bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610396919061055e565b6305f5e1006103a591906105a8565b6040516103b291906105f8565b60405180910390a3610611565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561046f5780860481111561044b5761044a6103ed565b5b600185161561045a5780820291505b80810290506104688561041a565b945061042f565b94509492505050565b5f826104875760019050610542565b81610494575f9050610542565b81600181146104aa57600281146104b4576104e3565b6001915050610542565b60ff8411156104c6576104c56103ed565b5b8360020a9150848211156104dd576104dc6103ed565b5b50610542565b5060208310610133831016604e8410600b84101617156105185782820a905083811115610513576105126103ed565b5b610542565b6105258484846001610426565b9250905081840481111561053c5761053b6103ed565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61056882610549565b915061057383610552565b92506105a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610478565b905092915050565b5f6105b282610549565b91506105bd83610549565b92508282026105cb81610549565b915082820484148315176105e2576105e16103ed565b5b5092915050565b6105f281610549565b82525050565b5f60208201905061060b5f8301846105e9565b92915050565b613f318061061e5f395ff3fe6080604052600436106101d0575f3560e01c806374bebabb116100f6578063a9059cbb11610094578063e68d0b0511610063578063e68d0b0514610621578063f2fde38b14610649578063f5b3c3bf14610671578063fce0299a146106ad576101d7565b8063a9059cbb14610555578063bf474bed14610591578063c8d464a4146105bb578063dd62ed3e146105e5576101d7565b80638da5cb5b116100d05780638da5cb5b146104af5780638f9a55c0146104d957806390d49b9d1461050357806395d89b411461052b576101d7565b806374bebabb146104455780637d1db4a51461046f5780638a8c523c14610499576101d7565b806323b872dd1161016e57806353bc13dc1161013d57806353bc13dc146103a157806365e3daaf146103c957806370a08231146103f3578063715018a61461042f576101d7565b806323b872dd146102e9578063313ce567146103255780633bdb20c51461034f57806349bd5a5e14610377576101d7565b80630faee56f116101aa5780630faee56f1461025757806318160ddd1461028157806320800a00146102ab57806322c97e31146102c1576101d7565b806301ab6ee5146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106d5565b005b3480156101fc575f80fd5b50610205610804565b6040516102129190612e83565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612f34565b610841565b60405161024e9190612f8c565b60405180910390f35b348015610262575f80fd5b5061026b61085e565b6040516102789190612fb4565b60405180910390f35b34801561028c575f80fd5b50610295610864565b6040516102a29190612fb4565b60405180910390f35b3480156102b6575f80fd5b506102bf610887565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612ff7565b610982565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190613022565b610a32565b60405161031c9190612f8c565b60405180910390f35b348015610330575f80fd5b50610339610b06565b604051610346919061308d565b60405180910390f35b34801561035a575f80fd5b50610375600480360381019061037091906130a6565b610b0e565b005b348015610382575f80fd5b5061038b610bac565b60405161039891906130e0565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c291906130f9565b610bd1565b005b3480156103d4575f80fd5b506103dd610cbd565b6040516103ea91906130e0565b60405180910390f35b3480156103fe575f80fd5b50610419600480360381019061041491906130f9565b610cd5565b6040516104269190612fb4565b60405180910390f35b34801561043a575f80fd5b50610443610d1b565b005b348015610450575f80fd5b50610459610e69565b6040516104669190612fb4565b60405180910390f35b34801561047a575f80fd5b50610483610e6f565b6040516104909190612fb4565b60405180910390f35b3480156104a4575f80fd5b506104ad610e75565b005b3480156104ba575f80fd5b506104c361148a565b6040516104d091906130e0565b60405180910390f35b3480156104e4575f80fd5b506104ed6114b1565b6040516104fa9190612fb4565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906130f9565b6114b7565b005b348015610536575f80fd5b5061053f61158e565b60405161054c9190612e83565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190612f34565b6115cb565b6040516105889190612f8c565b60405180910390f35b34801561059c575f80fd5b506105a56115e8565b6040516105b29190612fb4565b60405180910390f35b3480156105c6575f80fd5b506105cf6115ee565b6040516105dc9190612f8c565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190613124565b611600565b6040516106189190612fb4565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190613162565b611682565b005b348015610654575f80fd5b5061066f600480360381019061066a91906130f9565b61173b565b005b34801561067c575f80fd5b50610697600480360381019061069291906130f9565b6118f8565b6040516106a49190612f8c565b60405180910390f35b3480156106b8575f80fd5b506106d360048036038101906106ce9190612f34565b611915565b005b6106dd611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610760906131ea565b60405180910390fd5b6009600a6107779190613364565b6305f5e10061078691906133ae565b6011819055506009600a61079a9190613364565b6305f5e1006107a991906133ae565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107de9190613364565b6305f5e1006107ed91906133ae565b6040516107fa9190612fb4565b60405180910390a1565b60606040518060400160405280601181526020017f476173205574696c69747920546f6b656e000000000000000000000000000000815250905090565b5f61085461084d611a4a565b8484611a51565b6001905092915050565b60145481565b5f6009600a6108739190613364565b6305f5e10061088291906133ae565b905090565b61088f611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610912906131ea565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561097f573d5f803e3d5ffd5b50565b61098a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906131ea565b60405180910390fd5b8060195f6101000a81548160ff02191690831515021790555050565b5f610a3e848484611c14565b610afb84610a4a611a4a565b610af685604051806060016040528060288152602001613ed46028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aad611a4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127959092919063ffffffff16565b611a51565b600190509392505050565b5f6009905090565b610b16611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b99906131ea565b60405180910390fd5b8060188190555050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd9611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906131ea565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b731bf56759e95d9e85b6927161f6f8dbc4568642bc81565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d23611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b60115481565b610e7d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f00906131ea565b60405180910390fd5b601760149054906101000a900460ff1615610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090613439565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ff53060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fe19190613364565b6305f5e100610ff091906133ae565b611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611083919061346b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112d919061346b565b6040518363ffffffff1660e01b815260040161114a929190613496565b6020604051808303815f875af1158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a919061346b565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112fd30610cd5565b5f8061130761148a565b426040518863ffffffff1660e01b8152600401611329969594939291906134ff565b60606040518083038185885af1158015611345573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061136a9190613572565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161140a9291906135c2565b6020604051808303815f875af1158015611426573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144a91906135fd565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b6114bf611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611542906131ea565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600381526020017f4741530000000000000000000000000000000000000000000000000000000000815250905090565b5f6115de6115d7611a4a565b8484611c14565b6001905092915050565b60135481565b60195f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61168a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906131ea565b60405180910390fd5b81601760166101000a81548160ff021916908315150217905550806014819055505050565b611743611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613698565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61191d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906131ea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611a05929190613708565b6020604051808303815f875af1158015611a21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4591906135fd565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab690613779565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906137e1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c079190612fb4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613849565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce7906138b1565b60405180910390fd5b5f8111611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990613919565b60405180910390fd5b5f611d3b61148a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611da95750611d7961148a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124e557611dea6064611ddc600b54600d5411611dc957600754611dcd565b6009545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90506006544303611e7057603360055f4381526020019081526020015f205410611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613981565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e6a9061399f565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f13575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f66575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561202057601154821115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613a30565b60405180910390fd5b60125482611fbd85610cd5565b611fc79190613a4e565b1115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90613acb565b60405180910390fd5b600d5f81548092919061201a9061399f565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120be575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211c57601254826120d085610cd5565b6120da9190613a4e565b111561211b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211290613acb565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561219e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e2576121df60646121d1600c54600d54116121be576008546121c2565b600a545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612280575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c1575f90505b5f6122cb30610cd5565b905060195f9054906101000a900460ff1680156122f55750601760159054906101000a900460ff16155b8015612347575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561235f5750601760169054906101000a900460ff165b801561236c575060135481115b801561237b5750601054600d54115b1561242057600f54431115612392575f600e819055505b601854600e54106123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613b33565b60405180910390fd5b6123f56123f0846123eb846014546128b7565b6128b7565b6128cf565b6123fd612bdf565b600e5f81548092919061240f9061399f565b919050555043600f819055506124e3565b601760159054906101000a900460ff16158015612483575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561249b5750601760169054906101000a900460ff165b80156124a8575060135481115b80156124b75750601054600d54115b156124e2576124d96124d4846124cf846014546128b7565b6128b7565b6128cf565b6124e1612bdf565b5b5b505b5f8111156125e45761253d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125db9190612fb4565b60405180910390a35b6126348260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126d761268b8284612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61277a8486612d6990919063ffffffff16565b6040516127879190612fb4565b60405180910390a350505050565b5f8383111582906127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d39190612e83565b60405180910390fd5b505f83856127ea9190613b51565b9050809150509392505050565b5f808303612807575f9050612868565b5f828461281491906133ae565b90508284826128239190613bb1565b14612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a90613c51565b60405180910390fd5b809150505b92915050565b5f6128af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612db2565b905092915050565b5f8183116128c557826128c7565b815b905092915050565b6001601760156101000a81548160ff0219169083151502179055505f811161292c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292390613cb9565b60405180910390fd5b5f600367ffffffffffffffff81111561294857612947613cd7565b5b6040519080825280602002602001820160405280156129765781602001602082028036833780820191505090505b50905030815f8151811061298d5761298c613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a55919061346b565b81600181518110612a6957612a68613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050731bf56759e95d9e85b6927161f6f8dbc4568642bc81600281518110612acc57612acb613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b323060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8430426040518663ffffffff1660e01b8152600401612b94959493929190613de8565b5f604051808303815f87803b158015612bab575f80fd5b505af1158015612bbd573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c2d91906130e0565b602060405180830381865afa158015612c48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6c9190613e40565b90505f811115612d0957731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b8152600401612cc79291906135c2565b6020604051808303815f875af1158015612ce3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0791906135fd565b505b50565b5f808284612d1a9190613a4e565b905083811015612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5690613eb5565b60405180910390fd5b8091505092915050565b5f612daa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612795565b905092915050565b5f8083118290612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def9190612e83565b60405180910390fd5b505f8385612e069190613bb1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e5582612e13565b612e5f8185612e1d565b9350612e6f818560208601612e2d565b612e7881612e3b565b840191505092915050565b5f6020820190508181035f830152612e9b8184612e4b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ed082612ea7565b9050919050565b612ee081612ec6565b8114612eea575f80fd5b50565b5f81359050612efb81612ed7565b92915050565b5f819050919050565b612f1381612f01565b8114612f1d575f80fd5b50565b5f81359050612f2e81612f0a565b92915050565b5f8060408385031215612f4a57612f49612ea3565b5b5f612f5785828601612eed565b9250506020612f6885828601612f20565b9150509250929050565b5f8115159050919050565b612f8681612f72565b82525050565b5f602082019050612f9f5f830184612f7d565b92915050565b612fae81612f01565b82525050565b5f602082019050612fc75f830184612fa5565b92915050565b612fd681612f72565b8114612fe0575f80fd5b50565b5f81359050612ff181612fcd565b92915050565b5f6020828403121561300c5761300b612ea3565b5b5f61301984828501612fe3565b91505092915050565b5f805f6060848603121561303957613038612ea3565b5b5f61304686828701612eed565b935050602061305786828701612eed565b925050604061306886828701612f20565b9150509250925092565b5f60ff82169050919050565b61308781613072565b82525050565b5f6020820190506130a05f83018461307e565b92915050565b5f602082840312156130bb576130ba612ea3565b5b5f6130c884828501612f20565b91505092915050565b6130da81612ec6565b82525050565b5f6020820190506130f35f8301846130d1565b92915050565b5f6020828403121561310e5761310d612ea3565b5b5f61311b84828501612eed565b91505092915050565b5f806040838503121561313a57613139612ea3565b5b5f61314785828601612eed565b925050602061315885828601612eed565b9150509250929050565b5f806040838503121561317857613177612ea3565b5b5f61318585828601612fe3565b925050602061319685828601612f20565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131d4602083612e1d565b91506131df826131a0565b602082019050919050565b5f6020820190508181035f830152613201816131c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561328a5780860481111561326657613265613208565b5b60018516156132755780820291505b808102905061328385613235565b945061324a565b94509492505050565b5f826132a2576001905061335d565b816132af575f905061335d565b81600181146132c557600281146132cf576132fe565b600191505061335d565b60ff8411156132e1576132e0613208565b5b8360020a9150848211156132f8576132f7613208565b5b5061335d565b5060208310610133831016604e8410600b84101617156133335782820a90508381111561332e5761332d613208565b5b61335d565b6133408484846001613241565b9250905081840481111561335757613356613208565b5b81810290505b9392505050565b5f61336e82612f01565b915061337983613072565b92506133a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613293565b905092915050565b5f6133b882612f01565b91506133c383612f01565b92508282026133d181612f01565b915082820484148315176133e8576133e7613208565b5b5092915050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613423601483612e1d565b915061342e826133ef565b602082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b5f8151905061346581612ed7565b92915050565b5f602082840312156134805761347f612ea3565b5b5f61348d84828501613457565b91505092915050565b5f6040820190506134a95f8301856130d1565b6134b660208301846130d1565b9392505050565b5f819050919050565b5f819050919050565b5f6134e96134e46134df846134bd565b6134c6565b612f01565b9050919050565b6134f9816134cf565b82525050565b5f60c0820190506135125f8301896130d1565b61351f6020830188612fa5565b61352c60408301876134f0565b61353960608301866134f0565b61354660808301856130d1565b61355360a0830184612fa5565b979650505050505050565b5f8151905061356c81612f0a565b92915050565b5f805f6060848603121561358957613588612ea3565b5b5f6135968682870161355e565b93505060206135a78682870161355e565b92505060406135b88682870161355e565b9150509250925092565b5f6040820190506135d55f8301856130d1565b6135e26020830184612fa5565b9392505050565b5f815190506135f781612fcd565b92915050565b5f6020828403121561361257613611612ea3565b5b5f61361f848285016135e9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613682602683612e1d565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b5f6136d06136cb6136c684612ea7565b6134c6565b612ea7565b9050919050565b5f6136e1826136b6565b9050919050565b5f6136f2826136d7565b9050919050565b613702816136e8565b82525050565b5f60408201905061371b5f8301856136f9565b6137286020830184612fa5565b9392505050565b7f45524332303a20617070726f76652066726f6d207a65726f00000000000000005f82015250565b5f613763601883612e1d565b915061376e8261372f565b602082019050919050565b5f6020820190508181035f83015261379081613757565b9050919050565b7f45524332303a20617070726f766520746f207a65726f000000000000000000005f82015250565b5f6137cb601683612e1d565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b7f45524332303a2066726f6d207a65726f206164647265737300000000000000005f82015250565b5f613833601883612e1d565b915061383e826137ff565b602082019050919050565b5f6020820190508181035f83015261386081613827565b9050919050565b7f45524332303a20746f207a65726f2061646472657373000000000000000000005f82015250565b5f61389b601683612e1d565b91506138a682613867565b602082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f5472616e73666572206d757374206265203e20300000000000000000000000005f82015250565b5f613903601483612e1d565b915061390e826138cf565b602082019050919050565b5f6020820190508181035f830152613930816138f7565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f61396b602083612e1d565b915061397682613937565b602082019050919050565b5f6020820190508181035f8301526139988161395f565b9050919050565b5f6139a982612f01565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139db576139da613208565b5b600182019050919050565b7f45786365656473205f6d61785478416d6f756e740000000000000000000000005f82015250565b5f613a1a601483612e1d565b9150613a25826139e6565b602082019050919050565b5f6020820190508181035f830152613a4781613a0e565b9050919050565b5f613a5882612f01565b9150613a6383612f01565b9250828201905080821115613a7b57613a7a613208565b5b92915050565b7f45786365656473206d617857616c6c657453697a6500000000000000000000005f82015250565b5f613ab5601583612e1d565b9150613ac082613a81565b602082019050919050565b5f6020820190508181035f830152613ae281613aa9565b9050919050565b7f43412062616c616e63652073656c6c206c696d697400000000000000000000005f82015250565b5f613b1d601583612e1d565b9150613b2882613ae9565b602082019050919050565b5f6020820190508181035f830152613b4a81613b11565b9050919050565b5f613b5b82612f01565b9150613b6683612f01565b9250828203905081811115613b7e57613b7d613208565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bbb82612f01565b9150613bc683612f01565b925082613bd657613bd5613b84565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c3b602183612e1d565b9150613c4682613be1565b604082019050919050565b5f6020820190508181035f830152613c6881613c2f565b9050919050565b7f546f6b656e20616d6f756e74206d757374206265203e203000000000000000005f82015250565b5f613ca3601883612e1d565b9150613cae82613c6f565b602082019050919050565b5f6020820190508181035f830152613cd081613c97565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d6381612ec6565b82525050565b5f613d748383613d5a565b60208301905092915050565b5f602082019050919050565b5f613d9682613d31565b613da08185613d3b565b9350613dab83613d4b565b805f5b83811015613ddb578151613dc28882613d69565b9750613dcd83613d80565b925050600181019050613dae565b5085935050505092915050565b5f60a082019050613dfb5f830188612fa5565b613e0860208301876134f0565b8181036040830152613e1a8186613d8c565b9050613e2960608301856130d1565b613e366080830184612fa5565b9695505050505050565b5f60208284031215613e5557613e54612ea3565b5b5f613e628482850161355e565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e9f601b83612e1d565b9150613eaa82613e6b565b602082019050919050565b5f6020820190508181035f830152613ecc81613e93565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b4415df949fb1e6c4d790e3413dc853cbd9dd9bd238282b56302066ebacb4df64736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c806374bebabb116100f6578063a9059cbb11610094578063e68d0b0511610063578063e68d0b0514610621578063f2fde38b14610649578063f5b3c3bf14610671578063fce0299a146106ad576101d7565b8063a9059cbb14610555578063bf474bed14610591578063c8d464a4146105bb578063dd62ed3e146105e5576101d7565b80638da5cb5b116100d05780638da5cb5b146104af5780638f9a55c0146104d957806390d49b9d1461050357806395d89b411461052b576101d7565b806374bebabb146104455780637d1db4a51461046f5780638a8c523c14610499576101d7565b806323b872dd1161016e57806353bc13dc1161013d57806353bc13dc146103a157806365e3daaf146103c957806370a08231146103f3578063715018a61461042f576101d7565b806323b872dd146102e9578063313ce567146103255780633bdb20c51461034f57806349bd5a5e14610377576101d7565b80630faee56f116101aa5780630faee56f1461025757806318160ddd1461028157806320800a00146102ab57806322c97e31146102c1576101d7565b806301ab6ee5146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106d5565b005b3480156101fc575f80fd5b50610205610804565b6040516102129190612e83565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612f34565b610841565b60405161024e9190612f8c565b60405180910390f35b348015610262575f80fd5b5061026b61085e565b6040516102789190612fb4565b60405180910390f35b34801561028c575f80fd5b50610295610864565b6040516102a29190612fb4565b60405180910390f35b3480156102b6575f80fd5b506102bf610887565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612ff7565b610982565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190613022565b610a32565b60405161031c9190612f8c565b60405180910390f35b348015610330575f80fd5b50610339610b06565b604051610346919061308d565b60405180910390f35b34801561035a575f80fd5b50610375600480360381019061037091906130a6565b610b0e565b005b348015610382575f80fd5b5061038b610bac565b60405161039891906130e0565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c291906130f9565b610bd1565b005b3480156103d4575f80fd5b506103dd610cbd565b6040516103ea91906130e0565b60405180910390f35b3480156103fe575f80fd5b50610419600480360381019061041491906130f9565b610cd5565b6040516104269190612fb4565b60405180910390f35b34801561043a575f80fd5b50610443610d1b565b005b348015610450575f80fd5b50610459610e69565b6040516104669190612fb4565b60405180910390f35b34801561047a575f80fd5b50610483610e6f565b6040516104909190612fb4565b60405180910390f35b3480156104a4575f80fd5b506104ad610e75565b005b3480156104ba575f80fd5b506104c361148a565b6040516104d091906130e0565b60405180910390f35b3480156104e4575f80fd5b506104ed6114b1565b6040516104fa9190612fb4565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906130f9565b6114b7565b005b348015610536575f80fd5b5061053f61158e565b60405161054c9190612e83565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190612f34565b6115cb565b6040516105889190612f8c565b60405180910390f35b34801561059c575f80fd5b506105a56115e8565b6040516105b29190612fb4565b60405180910390f35b3480156105c6575f80fd5b506105cf6115ee565b6040516105dc9190612f8c565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190613124565b611600565b6040516106189190612fb4565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190613162565b611682565b005b348015610654575f80fd5b5061066f600480360381019061066a91906130f9565b61173b565b005b34801561067c575f80fd5b50610697600480360381019061069291906130f9565b6118f8565b6040516106a49190612f8c565b60405180910390f35b3480156106b8575f80fd5b506106d360048036038101906106ce9190612f34565b611915565b005b6106dd611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610760906131ea565b60405180910390fd5b6009600a6107779190613364565b6305f5e10061078691906133ae565b6011819055506009600a61079a9190613364565b6305f5e1006107a991906133ae565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107de9190613364565b6305f5e1006107ed91906133ae565b6040516107fa9190612fb4565b60405180910390a1565b60606040518060400160405280601181526020017f476173205574696c69747920546f6b656e000000000000000000000000000000815250905090565b5f61085461084d611a4a565b8484611a51565b6001905092915050565b60145481565b5f6009600a6108739190613364565b6305f5e10061088291906133ae565b905090565b61088f611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610912906131ea565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561097f573d5f803e3d5ffd5b50565b61098a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906131ea565b60405180910390fd5b8060195f6101000a81548160ff02191690831515021790555050565b5f610a3e848484611c14565b610afb84610a4a611a4a565b610af685604051806060016040528060288152602001613ed46028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aad611a4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127959092919063ffffffff16565b611a51565b600190509392505050565b5f6009905090565b610b16611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b99906131ea565b60405180910390fd5b8060188190555050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd9611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906131ea565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b731bf56759e95d9e85b6927161f6f8dbc4568642bc81565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d23611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b60115481565b610e7d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f00906131ea565b60405180910390fd5b601760149054906101000a900460ff1615610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090613439565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ff53060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fe19190613364565b6305f5e100610ff091906133ae565b611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611083919061346b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112d919061346b565b6040518363ffffffff1660e01b815260040161114a929190613496565b6020604051808303815f875af1158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a919061346b565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112fd30610cd5565b5f8061130761148a565b426040518863ffffffff1660e01b8152600401611329969594939291906134ff565b60606040518083038185885af1158015611345573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061136a9190613572565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161140a9291906135c2565b6020604051808303815f875af1158015611426573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144a91906135fd565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b6114bf611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611542906131ea565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600381526020017f4741530000000000000000000000000000000000000000000000000000000000815250905090565b5f6115de6115d7611a4a565b8484611c14565b6001905092915050565b60135481565b60195f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61168a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906131ea565b60405180910390fd5b81601760166101000a81548160ff021916908315150217905550806014819055505050565b611743611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613698565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61191d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906131ea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611a05929190613708565b6020604051808303815f875af1158015611a21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4591906135fd565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab690613779565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906137e1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c079190612fb4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613849565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce7906138b1565b60405180910390fd5b5f8111611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990613919565b60405180910390fd5b5f611d3b61148a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611da95750611d7961148a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124e557611dea6064611ddc600b54600d5411611dc957600754611dcd565b6009545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90506006544303611e7057603360055f4381526020019081526020015f205410611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613981565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e6a9061399f565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f13575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f66575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561202057601154821115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613a30565b60405180910390fd5b60125482611fbd85610cd5565b611fc79190613a4e565b1115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90613acb565b60405180910390fd5b600d5f81548092919061201a9061399f565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120be575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211c57601254826120d085610cd5565b6120da9190613a4e565b111561211b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211290613acb565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561219e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e2576121df60646121d1600c54600d54116121be576008546121c2565b600a545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612280575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c1575f90505b5f6122cb30610cd5565b905060195f9054906101000a900460ff1680156122f55750601760159054906101000a900460ff16155b8015612347575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561235f5750601760169054906101000a900460ff165b801561236c575060135481115b801561237b5750601054600d54115b1561242057600f54431115612392575f600e819055505b601854600e54106123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613b33565b60405180910390fd5b6123f56123f0846123eb846014546128b7565b6128b7565b6128cf565b6123fd612bdf565b600e5f81548092919061240f9061399f565b919050555043600f819055506124e3565b601760159054906101000a900460ff16158015612483575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561249b5750601760169054906101000a900460ff165b80156124a8575060135481115b80156124b75750601054600d54115b156124e2576124d96124d4846124cf846014546128b7565b6128b7565b6128cf565b6124e1612bdf565b5b5b505b5f8111156125e45761253d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125db9190612fb4565b60405180910390a35b6126348260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126d761268b8284612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61277a8486612d6990919063ffffffff16565b6040516127879190612fb4565b60405180910390a350505050565b5f8383111582906127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d39190612e83565b60405180910390fd5b505f83856127ea9190613b51565b9050809150509392505050565b5f808303612807575f9050612868565b5f828461281491906133ae565b90508284826128239190613bb1565b14612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a90613c51565b60405180910390fd5b809150505b92915050565b5f6128af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612db2565b905092915050565b5f8183116128c557826128c7565b815b905092915050565b6001601760156101000a81548160ff0219169083151502179055505f811161292c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292390613cb9565b60405180910390fd5b5f600367ffffffffffffffff81111561294857612947613cd7565b5b6040519080825280602002602001820160405280156129765781602001602082028036833780820191505090505b50905030815f8151811061298d5761298c613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a55919061346b565b81600181518110612a6957612a68613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050731bf56759e95d9e85b6927161f6f8dbc4568642bc81600281518110612acc57612acb613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b323060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8430426040518663ffffffff1660e01b8152600401612b94959493929190613de8565b5f604051808303815f87803b158015612bab575f80fd5b505af1158015612bbd573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c2d91906130e0565b602060405180830381865afa158015612c48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6c9190613e40565b90505f811115612d0957731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b8152600401612cc79291906135c2565b6020604051808303815f875af1158015612ce3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0791906135fd565b505b50565b5f808284612d1a9190613a4e565b905083811015612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5690613eb5565b60405180910390fd5b8091505092915050565b5f612daa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612795565b905092915050565b5f8083118290612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def9190612e83565b60405180910390fd5b505f8385612e069190613bb1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e5582612e13565b612e5f8185612e1d565b9350612e6f818560208601612e2d565b612e7881612e3b565b840191505092915050565b5f6020820190508181035f830152612e9b8184612e4b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ed082612ea7565b9050919050565b612ee081612ec6565b8114612eea575f80fd5b50565b5f81359050612efb81612ed7565b92915050565b5f819050919050565b612f1381612f01565b8114612f1d575f80fd5b50565b5f81359050612f2e81612f0a565b92915050565b5f8060408385031215612f4a57612f49612ea3565b5b5f612f5785828601612eed565b9250506020612f6885828601612f20565b9150509250929050565b5f8115159050919050565b612f8681612f72565b82525050565b5f602082019050612f9f5f830184612f7d565b92915050565b612fae81612f01565b82525050565b5f602082019050612fc75f830184612fa5565b92915050565b612fd681612f72565b8114612fe0575f80fd5b50565b5f81359050612ff181612fcd565b92915050565b5f6020828403121561300c5761300b612ea3565b5b5f61301984828501612fe3565b91505092915050565b5f805f6060848603121561303957613038612ea3565b5b5f61304686828701612eed565b935050602061305786828701612eed565b925050604061306886828701612f20565b9150509250925092565b5f60ff82169050919050565b61308781613072565b82525050565b5f6020820190506130a05f83018461307e565b92915050565b5f602082840312156130bb576130ba612ea3565b5b5f6130c884828501612f20565b91505092915050565b6130da81612ec6565b82525050565b5f6020820190506130f35f8301846130d1565b92915050565b5f6020828403121561310e5761310d612ea3565b5b5f61311b84828501612eed565b91505092915050565b5f806040838503121561313a57613139612ea3565b5b5f61314785828601612eed565b925050602061315885828601612eed565b9150509250929050565b5f806040838503121561317857613177612ea3565b5b5f61318585828601612fe3565b925050602061319685828601612f20565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131d4602083612e1d565b91506131df826131a0565b602082019050919050565b5f6020820190508181035f830152613201816131c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561328a5780860481111561326657613265613208565b5b60018516156132755780820291505b808102905061328385613235565b945061324a565b94509492505050565b5f826132a2576001905061335d565b816132af575f905061335d565b81600181146132c557600281146132cf576132fe565b600191505061335d565b60ff8411156132e1576132e0613208565b5b8360020a9150848211156132f8576132f7613208565b5b5061335d565b5060208310610133831016604e8410600b84101617156133335782820a90508381111561332e5761332d613208565b5b61335d565b6133408484846001613241565b9250905081840481111561335757613356613208565b5b81810290505b9392505050565b5f61336e82612f01565b915061337983613072565b92506133a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613293565b905092915050565b5f6133b882612f01565b91506133c383612f01565b92508282026133d181612f01565b915082820484148315176133e8576133e7613208565b5b5092915050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613423601483612e1d565b915061342e826133ef565b602082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b5f8151905061346581612ed7565b92915050565b5f602082840312156134805761347f612ea3565b5b5f61348d84828501613457565b91505092915050565b5f6040820190506134a95f8301856130d1565b6134b660208301846130d1565b9392505050565b5f819050919050565b5f819050919050565b5f6134e96134e46134df846134bd565b6134c6565b612f01565b9050919050565b6134f9816134cf565b82525050565b5f60c0820190506135125f8301896130d1565b61351f6020830188612fa5565b61352c60408301876134f0565b61353960608301866134f0565b61354660808301856130d1565b61355360a0830184612fa5565b979650505050505050565b5f8151905061356c81612f0a565b92915050565b5f805f6060848603121561358957613588612ea3565b5b5f6135968682870161355e565b93505060206135a78682870161355e565b92505060406135b88682870161355e565b9150509250925092565b5f6040820190506135d55f8301856130d1565b6135e26020830184612fa5565b9392505050565b5f815190506135f781612fcd565b92915050565b5f6020828403121561361257613611612ea3565b5b5f61361f848285016135e9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613682602683612e1d565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b5f6136d06136cb6136c684612ea7565b6134c6565b612ea7565b9050919050565b5f6136e1826136b6565b9050919050565b5f6136f2826136d7565b9050919050565b613702816136e8565b82525050565b5f60408201905061371b5f8301856136f9565b6137286020830184612fa5565b9392505050565b7f45524332303a20617070726f76652066726f6d207a65726f00000000000000005f82015250565b5f613763601883612e1d565b915061376e8261372f565b602082019050919050565b5f6020820190508181035f83015261379081613757565b9050919050565b7f45524332303a20617070726f766520746f207a65726f000000000000000000005f82015250565b5f6137cb601683612e1d565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b7f45524332303a2066726f6d207a65726f206164647265737300000000000000005f82015250565b5f613833601883612e1d565b915061383e826137ff565b602082019050919050565b5f6020820190508181035f83015261386081613827565b9050919050565b7f45524332303a20746f207a65726f2061646472657373000000000000000000005f82015250565b5f61389b601683612e1d565b91506138a682613867565b602082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f5472616e73666572206d757374206265203e20300000000000000000000000005f82015250565b5f613903601483612e1d565b915061390e826138cf565b602082019050919050565b5f6020820190508181035f830152613930816138f7565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f61396b602083612e1d565b915061397682613937565b602082019050919050565b5f6020820190508181035f8301526139988161395f565b9050919050565b5f6139a982612f01565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139db576139da613208565b5b600182019050919050565b7f45786365656473205f6d61785478416d6f756e740000000000000000000000005f82015250565b5f613a1a601483612e1d565b9150613a25826139e6565b602082019050919050565b5f6020820190508181035f830152613a4781613a0e565b9050919050565b5f613a5882612f01565b9150613a6383612f01565b9250828201905080821115613a7b57613a7a613208565b5b92915050565b7f45786365656473206d617857616c6c657453697a6500000000000000000000005f82015250565b5f613ab5601583612e1d565b9150613ac082613a81565b602082019050919050565b5f6020820190508181035f830152613ae281613aa9565b9050919050565b7f43412062616c616e63652073656c6c206c696d697400000000000000000000005f82015250565b5f613b1d601583612e1d565b9150613b2882613ae9565b602082019050919050565b5f6020820190508181035f830152613b4a81613b11565b9050919050565b5f613b5b82612f01565b9150613b6683612f01565b9250828203905081811115613b7e57613b7d613208565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bbb82612f01565b9150613bc683612f01565b925082613bd657613bd5613b84565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c3b602183612e1d565b9150613c4682613be1565b604082019050919050565b5f6020820190508181035f830152613c6881613c2f565b9050919050565b7f546f6b656e20616d6f756e74206d757374206265203e203000000000000000005f82015250565b5f613ca3601883612e1d565b9150613cae82613c6f565b602082019050919050565b5f6020820190508181035f830152613cd081613c97565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d6381612ec6565b82525050565b5f613d748383613d5a565b60208301905092915050565b5f602082019050919050565b5f613d9682613d31565b613da08185613d3b565b9350613dab83613d4b565b805f5b83811015613ddb578151613dc28882613d69565b9750613dcd83613d80565b925050600181019050613dae565b5085935050505092915050565b5f60a082019050613dfb5f830188612fa5565b613e0860208301876134f0565b8181036040830152613e1a8186613d8c565b9050613e2960608301856130d1565b613e366080830184612fa5565b9695505050505050565b5f60208284031215613e5557613e54612ea3565b5b5f613e628482850161355e565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e9f601b83612e1d565b9150613eaa82613e6b565b602082019050919050565b5f6020820190508181035f830152613ecc81613e93565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b4415df949fb1e6c4d790e3413dc853cbd9dd9bd238282b56302066ebacb4df64736f6c63430008190033

Deployed Bytecode Sourcemap

12193:12344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23206:165;;;;;;;;;;;;;:::i;:::-;;15200:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16019:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14054:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15471:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22769:110;;;;;;;;;;;;;:::i;:::-;;22622:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16186:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15382:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22528:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14293:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17005:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12378:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15572:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10690:148;;;;;;;;;;;;;:::i;:::-;;14496:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13834:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23444:1053;;;;;;;;;;;;;:::i;:::-;;10480:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13898:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23042:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15289:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15697:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13988:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14528:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15870:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10844:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12797:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22887:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23206:165;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13611:1:::1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23263:12;:22;;;;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23296:14;:24;;;;23336:27;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23336:27;;;;;;:::i;:::-;;;;;;;;23206:165::o:0;15200:83::-;15237:13;15270:5;;;;;;;;;;;;;;;;;15263:12;;15200:83;:::o;16019:161::-;16094:4;16111:39;16120:12;:10;:12::i;:::-;16134:7;16143:6;16111:8;:39::i;:::-;16168:4;16161:11;;16019:161;;;;:::o;14054:53::-;;;;:::o;15471:95::-;15524:7;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;15544:14;;15471:95;:::o;22769:110::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22828:10:::1;;;;;;;;;;;22820:28;;:51;22849:21;22820:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22769:110::o:0;22622:93::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22700:7:::1;22688:9;;:19;;;;;;;;;;;;;;;;;;22622:93:::0;:::o;16186:401::-;16320:4;16337:36;16347:6;16355:9;16366:6;16337:9;:36::i;:::-;16384:173;16407:6;16429:12;:10;:12::i;:::-;16457:89;16495:6;16457:89;;;;;;;;;;;;;;;;;:11;:19;16469:6;16457:19;;;;;;;;;;;;;;;:33;16477:12;:10;:12::i;:::-;16457:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16384:8;:173::i;:::-;16575:4;16568:11;;16186:401;;;;;:::o;15382:83::-;15423:5;13611:1;15441:16;;15382:83;:::o;22528:88::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22602:6:::1;22593;:15;;;;22528:88:::0;:::o;14293:28::-;;;;;;;;;;;;;:::o;17005:96::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17089:4:::1;17070:10;:16;17081:4;17070:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17005:96:::0;:::o;12378:78::-;12414:42;12378:78;:::o;15572:119::-;15638:7;15665:9;:18;15675:7;15665:18;;;;;;;;;;;;;;;;15658:25;;15572:119;;;:::o;10690:148::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10797:1:::1;10760:40;;10781:6;::::0;::::1;;;;;;;;10760:40;;;;;;;;;;;;10828:1;10811:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10690:148::o:0;14496:25::-;;;;:::o;13834:57::-;;;;:::o;23444:1053::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23510:11:::1;;;;;;;;;;;23509:12;23501:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;23608:42;23557:15;;:130;;;;;;;;;;;;;;;;;;23700:58;23717:4;23732:15;;;;;;;;;;;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23700:8;:58::i;:::-;23803:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23785:69;;;23863:4;23870:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23785:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23769:13;;:124;;;;;;;;;;;;;;;;;;23943:4;23906:10;:34;23925:13;;;;;;;;;;;23906:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23992:4;23958:7;:31;23974:13;;;;;;;;;;;23958:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;24088:15;;;;;;;;;;;:31;;;24127:21;24172:4;24192:24;24210:4;24192:9;:24::i;:::-;24231:1;24247::::0;24263:7:::1;:5;:7::i;:::-;24285:15;24088:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24331:13;;;;;;;;;;;24324:29;;;24362:15;;;;;;;;;;;24380:14;24324:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24420:4;24406:11;;:18;;;;;;;;;;;;;;;;;;24449:4;24435:11;;:18;;;;;;;;;;;;;;;;;;24477:12;24464:10;:25;;;;23444:1053::o:0;10480:79::-;10518:7;10545:6;;;;;;;;;;;10538:13;;10480:79;:::o;13898:57::-;;;;:::o;23042:116::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23137:12:::1;23116:10;;:34;;;;;;;;;;;;;;;;;;23042:116:::0;:::o;15289:87::-;15328:13;15361:7;;;;;;;;;;;;;;;;;15354:14;;15289:87;:::o;15697:167::-;15775:4;15792:42;15802:12;:10;:12::i;:::-;15816:9;15827:6;15792:9;:42::i;:::-;15852:4;15845:11;;15697:167;;;;:::o;13988:59::-;;;;:::o;14528:28::-;;;;;;;;;;;;;:::o;15870:143::-;15951:7;15978:11;:18;15990:5;15978:18;;;;;;;;;;;;;;;:27;15997:7;15978:27;;;;;;;;;;;;;;;;15971:34;;15870:143;;;;:::o;22379:::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22476:7:::1;22462:11;;:21;;;;;;;;;;;;;;;;;;22508:6;22494:11;:20;;;;22379:143:::0;;:::o;10844:244::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10953:1:::1;10933:22;;:8;:22;;::::0;10925:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11043:8;11014:38;;11035:6;::::0;::::1;;;;;;;;11014:38;;;;;;;;;;;;11072:8;11063:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10844:244:::0;:::o;12797:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;22887:147::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22985:10:::1;22978:27;;;23006:10;;;;;;;;;;;23018:7;22978:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22887:147:::0;;:::o;8233:98::-;8286:7;8313:10;8306:17;;8233:98;:::o;16620:311::-;16730:1;16713:19;;:5;:19;;;16705:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16799:1;16780:21;;:7;:21;;;16772:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16869:6;16839:11;:18;16851:5;16839:18;;;;;;;;;;;;;;;:27;16858:7;16839:27;;;;;;;;;;;;;;;:36;;;;16907:7;16891:32;;16900:5;16891:32;;;16916:6;16891:32;;;;;;:::i;:::-;;;;;;;;16620:311;;;:::o;17179:3586::-;17283:1;17267:18;;:4;:18;;;17259:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17347:1;17333:16;;:2;:16;;;17325:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17404:1;17395:6;:10;17387:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17443:17;17540:7;:5;:7::i;:::-;17532:15;;:4;:15;;;;:32;;;;;17557:7;:5;:7::i;:::-;17551:13;;:2;:13;;;;17532:32;17528:2808;;;17632:82;17710:3;17632:73;17656:15;;17644:9;;:27;17643:61;;17690:14;;17643:61;;;17675:12;;17643:61;17632:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;17620:94;;17795:10;;17779:12;:26;17776:186;;17861:2;17833:11;:25;17845:12;17833:25;;;;;;;;;;;;:30;17825:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17919:11;:25;17931:12;17919:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;17776:186;18002:10;:16;18013:4;18002:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18036:15;;;;;;;;;;;18022:30;;:2;:30;;;;18002:50;:66;;;;;18057:7;:11;18065:2;18057:11;;;;;;;;;;;;;;;;;;;;;;;;;18056:12;18002:66;17998:285;;;18107:12;;18097:6;:22;;18089:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18197:14;;18187:6;18171:13;18181:2;18171:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18163:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18256:9;;:11;;;;;;;;;:::i;:::-;;;;;;17998:285;18336:10;:14;18347:2;18336:14;;;;;;;;;;;;;;;;;;;;;;;;;18335:15;:31;;;;;18355:7;:11;18363:2;18355:11;;;;;;;;;;;;;;;;;;;;;;;;;18354:12;18335:31;18331:146;;;18421:14;;18411:6;18395:13;18405:2;18395:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18387:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18331:146;18518:10;:14;18529:2;18518:14;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;18552:4;18536:21;;:4;:21;;;;18518:39;18514:177;;;18590:85;18671:3;18590:76;18614:16;;18602:9;;:28;18601:64;;18650:15;;18601:64;;;18634:13;;18601:64;18590:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;18578:97;;18514:177;18770:10;:16;18781:4;18770:16;;;;;;;;;;;;;;;;;;;;;;;;;18769:17;:36;;;;;18791:10;:14;18802:2;18791:14;;;;;;;;;;;;;;;;;;;;;;;;;18790:15;18769:36;:61;;;;;18825:4;18809:21;;:4;:21;;;;18769:61;18765:115;;;18863:1;18851:13;;18765:115;18991:28;19022:24;19040:4;19022:9;:24::i;:::-;18991:55;;19083:9;;;;;;;;;;;:38;;;;;19115:6;;;;;;;;;;;19114:7;19083:38;:74;;;;;19143:10;:14;19154:2;19143:14;;;;;;;;;;;;;;;;;;;;;;;;;19083:74;:107;;;;;19179:11;;;;;;;;;;;19083:107;:169;;;;;19235:17;;19212:20;:40;19083:169;:221;;;;;19286:18;;19274:9;;:30;19083:221;19061:1264;;;19432:13;;19417:12;:28;19413:90;;;19482:1;19470:9;:13;;;;19413:90;19541:6;;19529:9;;:18;19521:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19628:71;19645:53;19650:6;19658:39;19663:20;19685:11;;19658:4;:39::i;:::-;19645:4;:53::i;:::-;19628:16;:71::i;:::-;19789:23;:21;:23::i;:::-;19833:9;;:11;;;;;;;;;:::i;:::-;;;;;;19879:12;19863:13;:28;;;;19061:1264;;;19950:6;;;;;;;;;;;19949:7;:43;;;;;19978:10;:14;19989:2;19978:14;;;;;;;;;;;;;;;;;;;;;;;;;19949:43;:76;;;;;20014:11;;;;;;;;;;;19949:76;:138;;;;;20070:17;;20047:20;:40;19949:138;:190;;;;;20121:18;;20109:9;;:30;19949:190;19927:398;;;20196:71;20213:53;20218:6;20226:39;20231:20;20253:11;;20226:4;:39::i;:::-;20213:4;:53::i;:::-;20196:16;:71::i;:::-;20286:23;:21;:23::i;:::-;19927:398;19061:1264;17566:2770;17528:2808;20384:1;20372:9;:13;20369:170;;;20428:39;20457:9;20428;:24;20446:4;20428:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20401:9;:24;20419:4;20401:24;;;;;;;;;;;;;;;:66;;;;20510:4;20487:40;;20496:4;20487:40;;;20517:9;20487:40;;;;;;:::i;:::-;;;;;;;;20369:170;20604:27;20624:6;20604:9;:15;20614:4;20604:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;20586:9;:15;20596:4;20586:15;;;;;;;;;;;;;;;:45;;;;20660:40;20678:21;20689:9;20678:6;:10;;:21;;;;:::i;:::-;20660:9;:13;20670:2;20660:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;20642:9;:13;20652:2;20642:13;;;;;;;;;;;;;;;:58;;;;20731:2;20716:41;;20725:4;20716:41;;;20735:21;20746:9;20735:6;:10;;:21;;;;:::i;:::-;20716:41;;;;;;:::i;:::-;;;;;;;;17248:3517;17179:3586;;;:::o;9404:190::-;9490:7;9523:1;9518;:6;;9526:12;9510:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9550:9;9566:1;9562;:5;;;;:::i;:::-;9550:17;;9585:1;9578:8;;;9404:190;;;;;:::o;9600:224::-;9658:7;9687:1;9682;:6;9678:25;;9699:1;9692:8;;;;9678:25;9713:9;9729:1;9725;:5;;;;:::i;:::-;9713:17;;9758:1;9753;9749;:5;;;;:::i;:::-;:10;9741:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9815:1;9808:8;;;9600:224;;;;;:::o;9830:132::-;9888:7;9915:39;9919:1;9922;9915:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9908:46;;9830:132;;;;:::o;20853:106::-;20911:7;20941:1;20937;:5;20936:15;;20950:1;20936:15;;;20946:1;20936:15;20929:22;;20853:106;;;;:::o;21050:777::-;14658:4;14649:6;;:13;;;;;;;;;;;;;;;;;;21150:1:::1;21136:11;:15;21128:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21193:21;21231:1;21217:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21193:40;;21262:4;21244;21249:1;21244:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21309:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21299:4;21304:1;21299:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12414:42;21367:4;21372:1;21367:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;::::0;::::1;21424:62;21441:4;21456:15;;;;;;;;;;;21474:11;21424:8;:62::i;:::-;21590:15;;;;;;;;;;;:69;;;21674:11;21700:1;21716:4;21743;21793:15;21590:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21117:710;14694:5:::0;14685:6;;:14;;;;;;;;;;;;;;;;;;21050:777;:::o;21920:369::-;21972:18;12414:42;21993:27;;;22029:4;21993:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21972:63;;22062:1;22049:10;:14;22046:236;;;12414:42;22139:26;;;22184:42;22245:10;22139:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22046:236;21961:328;21920:369::o;9077:179::-;9135:7;9155:9;9171:1;9167;:5;;;;:::i;:::-;9155:17;;9196:1;9191;:6;;9183:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9247:1;9240:8;;;9077:179;;;;:::o;9262:136::-;9320:7;9347:43;9351:1;9354;9347:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9340:50;;9262:136;;;;:::o;9968:189::-;10054:7;10086:1;10082;:5;10089:12;10074:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10113:9;10129:1;10125;:5;;;;:::i;:::-;10113:17;;10148:1;10141:8;;;9968:189;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:116::-;3761:21;3776:5;3761:21;:::i;:::-;3754:5;3751:32;3741:60;;3797:1;3794;3787:12;3741:60;3691:116;:::o;3813:133::-;3856:5;3894:6;3881:20;3872:29;;3910:30;3934:5;3910:30;:::i;:::-;3813:133;;;;:::o;3952:323::-;4008:6;4057:2;4045:9;4036:7;4032:23;4028:32;4025:119;;;4063:79;;:::i;:::-;4025:119;4183:1;4208:50;4250:7;4241:6;4230:9;4226:22;4208:50;:::i;:::-;4198:60;;4154:114;3952:323;;;;:::o;4281:619::-;4358:6;4366;4374;4423:2;4411:9;4402:7;4398:23;4394:32;4391:119;;;4429:79;;:::i;:::-;4391:119;4549:1;4574:53;4619:7;4610:6;4599:9;4595:22;4574:53;:::i;:::-;4564:63;;4520:117;4676:2;4702:53;4747:7;4738:6;4727:9;4723:22;4702:53;:::i;:::-;4692:63;;4647:118;4804:2;4830:53;4875:7;4866:6;4855:9;4851:22;4830:53;:::i;:::-;4820:63;;4775:118;4281:619;;;;;:::o;4906:86::-;4941:7;4981:4;4974:5;4970:16;4959:27;;4906:86;;;:::o;4998:112::-;5081:22;5097:5;5081:22;:::i;:::-;5076:3;5069:35;4998:112;;:::o;5116:214::-;5205:4;5243:2;5232:9;5228:18;5220:26;;5256:67;5320:1;5309:9;5305:17;5296:6;5256:67;:::i;:::-;5116:214;;;;:::o;5336:329::-;5395:6;5444:2;5432:9;5423:7;5419:23;5415:32;5412:119;;;5450:79;;:::i;:::-;5412:119;5570:1;5595:53;5640:7;5631:6;5620:9;5616:22;5595:53;:::i;:::-;5585:63;;5541:117;5336:329;;;;:::o;5671:118::-;5758:24;5776:5;5758:24;:::i;:::-;5753:3;5746:37;5671:118;;:::o;5795:222::-;5888:4;5926:2;5915:9;5911:18;5903:26;;5939:71;6007:1;5996:9;5992:17;5983:6;5939:71;:::i;:::-;5795:222;;;;:::o;6023:329::-;6082:6;6131:2;6119:9;6110:7;6106:23;6102:32;6099:119;;;6137:79;;:::i;:::-;6099:119;6257:1;6282:53;6327:7;6318:6;6307:9;6303:22;6282:53;:::i;:::-;6272:63;;6228:117;6023:329;;;;:::o;6358:474::-;6426:6;6434;6483:2;6471:9;6462:7;6458:23;6454:32;6451:119;;;6489:79;;:::i;:::-;6451:119;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6358:474;;;;;:::o;6838:468::-;6903:6;6911;6960:2;6948:9;6939:7;6935:23;6931:32;6928:119;;;6966:79;;:::i;:::-;6928:119;7086:1;7111:50;7153:7;7144:6;7133:9;7129:22;7111:50;:::i;:::-;7101:60;;7057:114;7210:2;7236:53;7281:7;7272:6;7261:9;7257:22;7236:53;:::i;:::-;7226:63;;7181:118;6838:468;;;;;:::o;7312:182::-;7452:34;7448:1;7440:6;7436:14;7429:58;7312:182;:::o;7500:366::-;7642:3;7663:67;7727:2;7722:3;7663:67;:::i;:::-;7656:74;;7739:93;7828:3;7739:93;:::i;:::-;7857:2;7852:3;7848:12;7841:19;;7500:366;;;:::o;7872:419::-;8038:4;8076:2;8065:9;8061:18;8053:26;;8125:9;8119:4;8115:20;8111:1;8100:9;8096:17;8089:47;8153:131;8279:4;8153:131;:::i;:::-;8145:139;;7872:419;;;:::o;8297:180::-;8345:77;8342:1;8335:88;8442:4;8439:1;8432:15;8466:4;8463:1;8456:15;8483:102;8525:8;8572:5;8569:1;8565:13;8544:34;;8483:102;;;:::o;8591:848::-;8652:5;8659:4;8683:6;8674:15;;8707:5;8698:14;;8721:712;8742:1;8732:8;8729:15;8721:712;;;8837:4;8832:3;8828:14;8822:4;8819:24;8816:50;;;8846:18;;:::i;:::-;8816:50;8896:1;8886:8;8882:16;8879:451;;;9311:4;9304:5;9300:16;9291:25;;8879:451;9361:4;9355;9351:15;9343:23;;9391:32;9414:8;9391:32;:::i;:::-;9379:44;;8721:712;;;8591:848;;;;;;;:::o;9445:1073::-;9499:5;9690:8;9680:40;;9711:1;9702:10;;9713:5;;9680:40;9739:4;9729:36;;9756:1;9747:10;;9758:5;;9729:36;9825:4;9873:1;9868:27;;;;9909:1;9904:191;;;;9818:277;;9868:27;9886:1;9877:10;;9888:5;;;9904:191;9949:3;9939:8;9936:17;9933:43;;;9956:18;;:::i;:::-;9933:43;10005:8;10002:1;9998:16;9989:25;;10040:3;10033:5;10030:14;10027:40;;;10047:18;;:::i;:::-;10027:40;10080:5;;;9818:277;;10204:2;10194:8;10191:16;10185:3;10179:4;10176:13;10172:36;10154:2;10144:8;10141:16;10136:2;10130:4;10127:12;10123:35;10107:111;10104:246;;;10260:8;10254:4;10250:19;10241:28;;10295:3;10288:5;10285:14;10282:40;;;10302:18;;:::i;:::-;10282:40;10335:5;;10104:246;10375:42;10413:3;10403:8;10397:4;10394:1;10375:42;:::i;:::-;10360:57;;;;10449:4;10444:3;10440:14;10433:5;10430:25;10427:51;;;10458:18;;:::i;:::-;10427:51;10507:4;10500:5;10496:16;10487:25;;9445:1073;;;;;;:::o;10524:281::-;10582:5;10606:23;10624:4;10606:23;:::i;:::-;10598:31;;10650:25;10666:8;10650:25;:::i;:::-;10638:37;;10694:104;10731:66;10721:8;10715:4;10694:104;:::i;:::-;10685:113;;10524:281;;;;:::o;10811:410::-;10851:7;10874:20;10892:1;10874:20;:::i;:::-;10869:25;;10908:20;10926:1;10908:20;:::i;:::-;10903:25;;10963:1;10960;10956:9;10985:30;11003:11;10985:30;:::i;:::-;10974:41;;11164:1;11155:7;11151:15;11148:1;11145:22;11125:1;11118:9;11098:83;11075:139;;11194:18;;:::i;:::-;11075:139;10859:362;10811:410;;;;:::o;11227:170::-;11367:22;11363:1;11355:6;11351:14;11344:46;11227:170;:::o;11403:366::-;11545:3;11566:67;11630:2;11625:3;11566:67;:::i;:::-;11559:74;;11642:93;11731:3;11642:93;:::i;:::-;11760:2;11755:3;11751:12;11744:19;;11403:366;;;:::o;11775:419::-;11941:4;11979:2;11968:9;11964:18;11956:26;;12028:9;12022:4;12018:20;12014:1;12003:9;11999:17;11992:47;12056:131;12182:4;12056:131;:::i;:::-;12048:139;;11775:419;;;:::o;12200:143::-;12257:5;12288:6;12282:13;12273:22;;12304:33;12331:5;12304:33;:::i;:::-;12200:143;;;;:::o;12349:351::-;12419:6;12468:2;12456:9;12447:7;12443:23;12439:32;12436:119;;;12474:79;;:::i;:::-;12436:119;12594:1;12619:64;12675:7;12666:6;12655:9;12651:22;12619:64;:::i;:::-;12609:74;;12565:128;12349:351;;;;:::o;12706:332::-;12827:4;12865:2;12854:9;12850:18;12842:26;;12878:71;12946:1;12935:9;12931:17;12922:6;12878:71;:::i;:::-;12959:72;13027:2;13016:9;13012:18;13003:6;12959:72;:::i;:::-;12706:332;;;;;:::o;13044:85::-;13089:7;13118:5;13107:16;;13044:85;;;:::o;13135:60::-;13163:3;13184:5;13177:12;;13135:60;;;:::o;13201:158::-;13259:9;13292:61;13310:42;13319:32;13345:5;13319:32;:::i;:::-;13310:42;:::i;:::-;13292:61;:::i;:::-;13279:74;;13201:158;;;:::o;13365:147::-;13460:45;13499:5;13460:45;:::i;:::-;13455:3;13448:58;13365:147;;:::o;13518:807::-;13767:4;13805:3;13794:9;13790:19;13782:27;;13819:71;13887:1;13876:9;13872:17;13863:6;13819:71;:::i;:::-;13900:72;13968:2;13957:9;13953:18;13944:6;13900:72;:::i;:::-;13982:80;14058:2;14047:9;14043:18;14034:6;13982:80;:::i;:::-;14072;14148:2;14137:9;14133:18;14124:6;14072:80;:::i;:::-;14162:73;14230:3;14219:9;14215:19;14206:6;14162:73;:::i;:::-;14245;14313:3;14302:9;14298:19;14289:6;14245:73;:::i;:::-;13518:807;;;;;;;;;:::o;14331:143::-;14388:5;14419:6;14413:13;14404:22;;14435:33;14462:5;14435:33;:::i;:::-;14331:143;;;;:::o;14480:663::-;14568:6;14576;14584;14633:2;14621:9;14612:7;14608:23;14604:32;14601:119;;;14639:79;;:::i;:::-;14601:119;14759:1;14784:64;14840:7;14831:6;14820:9;14816:22;14784:64;:::i;:::-;14774:74;;14730:128;14897:2;14923:64;14979:7;14970:6;14959:9;14955:22;14923:64;:::i;:::-;14913:74;;14868:129;15036:2;15062:64;15118:7;15109:6;15098:9;15094:22;15062:64;:::i;:::-;15052:74;;15007:129;14480:663;;;;;:::o;15149:332::-;15270:4;15308:2;15297:9;15293:18;15285:26;;15321:71;15389:1;15378:9;15374:17;15365:6;15321:71;:::i;:::-;15402:72;15470:2;15459:9;15455:18;15446:6;15402:72;:::i;:::-;15149:332;;;;;:::o;15487:137::-;15541:5;15572:6;15566:13;15557:22;;15588:30;15612:5;15588:30;:::i;:::-;15487:137;;;;:::o;15630:345::-;15697:6;15746:2;15734:9;15725:7;15721:23;15717:32;15714:119;;;15752:79;;:::i;:::-;15714:119;15872:1;15897:61;15950:7;15941:6;15930:9;15926:22;15897:61;:::i;:::-;15887:71;;15843:125;15630:345;;;;:::o;15981:225::-;16121:34;16117:1;16109:6;16105:14;16098:58;16190:8;16185:2;16177:6;16173:15;16166:33;15981:225;:::o;16212:366::-;16354:3;16375:67;16439:2;16434:3;16375:67;:::i;:::-;16368:74;;16451:93;16540:3;16451:93;:::i;:::-;16569:2;16564:3;16560:12;16553:19;;16212:366;;;:::o;16584:419::-;16750:4;16788:2;16777:9;16773:18;16765:26;;16837:9;16831:4;16827:20;16823:1;16812:9;16808:17;16801:47;16865:131;16991:4;16865:131;:::i;:::-;16857:139;;16584:419;;;:::o;17009:142::-;17059:9;17092:53;17110:34;17119:24;17137:5;17119:24;:::i;:::-;17110:34;:::i;:::-;17092:53;:::i;:::-;17079:66;;17009:142;;;:::o;17157:126::-;17207:9;17240:37;17271:5;17240:37;:::i;:::-;17227:50;;17157:126;;;:::o;17289:134::-;17347:9;17380:37;17411:5;17380:37;:::i;:::-;17367:50;;17289:134;;;:::o;17429:147::-;17524:45;17563:5;17524:45;:::i;:::-;17519:3;17512:58;17429:147;;:::o;17582:348::-;17711:4;17749:2;17738:9;17734:18;17726:26;;17762:79;17838:1;17827:9;17823:17;17814:6;17762:79;:::i;:::-;17851:72;17919:2;17908:9;17904:18;17895:6;17851:72;:::i;:::-;17582:348;;;;;:::o;17936:174::-;18076:26;18072:1;18064:6;18060:14;18053:50;17936:174;:::o;18116:366::-;18258:3;18279:67;18343:2;18338:3;18279:67;:::i;:::-;18272:74;;18355:93;18444:3;18355:93;:::i;:::-;18473:2;18468:3;18464:12;18457:19;;18116:366;;;:::o;18488:419::-;18654:4;18692:2;18681:9;18677:18;18669:26;;18741:9;18735:4;18731:20;18727:1;18716:9;18712:17;18705:47;18769:131;18895:4;18769:131;:::i;:::-;18761:139;;18488:419;;;:::o;18913:172::-;19053:24;19049:1;19041:6;19037:14;19030:48;18913:172;:::o;19091:366::-;19233:3;19254:67;19318:2;19313:3;19254:67;:::i;:::-;19247:74;;19330:93;19419:3;19330:93;:::i;:::-;19448:2;19443:3;19439:12;19432:19;;19091:366;;;:::o;19463:419::-;19629:4;19667:2;19656:9;19652:18;19644:26;;19716:9;19710:4;19706:20;19702:1;19691:9;19687:17;19680:47;19744:131;19870:4;19744:131;:::i;:::-;19736:139;;19463:419;;;:::o;19888:174::-;20028:26;20024:1;20016:6;20012:14;20005:50;19888:174;:::o;20068:366::-;20210:3;20231:67;20295:2;20290:3;20231:67;:::i;:::-;20224:74;;20307:93;20396:3;20307:93;:::i;:::-;20425:2;20420:3;20416:12;20409:19;;20068:366;;;:::o;20440:419::-;20606:4;20644:2;20633:9;20629:18;20621:26;;20693:9;20687:4;20683:20;20679:1;20668:9;20664:17;20657:47;20721:131;20847:4;20721:131;:::i;:::-;20713:139;;20440:419;;;:::o;20865:172::-;21005:24;21001:1;20993:6;20989:14;20982:48;20865:172;:::o;21043:366::-;21185:3;21206:67;21270:2;21265:3;21206:67;:::i;:::-;21199:74;;21282:93;21371:3;21282:93;:::i;:::-;21400:2;21395:3;21391:12;21384:19;;21043:366;;;:::o;21415:419::-;21581:4;21619:2;21608:9;21604:18;21596:26;;21668:9;21662:4;21658:20;21654:1;21643:9;21639:17;21632:47;21696:131;21822:4;21696:131;:::i;:::-;21688:139;;21415:419;;;:::o;21840:170::-;21980:22;21976:1;21968:6;21964:14;21957:46;21840:170;:::o;22016:366::-;22158:3;22179:67;22243:2;22238:3;22179:67;:::i;:::-;22172:74;;22255:93;22344:3;22255:93;:::i;:::-;22373:2;22368:3;22364:12;22357:19;;22016:366;;;:::o;22388:419::-;22554:4;22592:2;22581:9;22577:18;22569:26;;22641:9;22635:4;22631:20;22627:1;22616:9;22612:17;22605:47;22669:131;22795:4;22669:131;:::i;:::-;22661:139;;22388:419;;;:::o;22813:182::-;22953:34;22949:1;22941:6;22937:14;22930:58;22813:182;:::o;23001:366::-;23143:3;23164:67;23228:2;23223:3;23164:67;:::i;:::-;23157:74;;23240:93;23329:3;23240:93;:::i;:::-;23358:2;23353:3;23349:12;23342:19;;23001:366;;;:::o;23373:419::-;23539:4;23577:2;23566:9;23562:18;23554:26;;23626:9;23620:4;23616:20;23612:1;23601:9;23597:17;23590:47;23654:131;23780:4;23654:131;:::i;:::-;23646:139;;23373:419;;;:::o;23798:233::-;23837:3;23860:24;23878:5;23860:24;:::i;:::-;23851:33;;23906:66;23899:5;23896:77;23893:103;;23976:18;;:::i;:::-;23893:103;24023:1;24016:5;24012:13;24005:20;;23798:233;;;:::o;24037:170::-;24177:22;24173:1;24165:6;24161:14;24154:46;24037:170;:::o;24213:366::-;24355:3;24376:67;24440:2;24435:3;24376:67;:::i;:::-;24369:74;;24452:93;24541:3;24452:93;:::i;:::-;24570:2;24565:3;24561:12;24554:19;;24213:366;;;:::o;24585:419::-;24751:4;24789:2;24778:9;24774:18;24766:26;;24838:9;24832:4;24828:20;24824:1;24813:9;24809:17;24802:47;24866:131;24992:4;24866:131;:::i;:::-;24858:139;;24585:419;;;:::o;25010:191::-;25050:3;25069:20;25087:1;25069:20;:::i;:::-;25064:25;;25103:20;25121:1;25103:20;:::i;:::-;25098:25;;25146:1;25143;25139:9;25132:16;;25167:3;25164:1;25161:10;25158:36;;;25174:18;;:::i;:::-;25158:36;25010:191;;;;:::o;25207:171::-;25347:23;25343:1;25335:6;25331:14;25324:47;25207:171;:::o;25384:366::-;25526:3;25547:67;25611:2;25606:3;25547:67;:::i;:::-;25540:74;;25623:93;25712:3;25623:93;:::i;:::-;25741:2;25736:3;25732:12;25725:19;;25384:366;;;:::o;25756:419::-;25922:4;25960:2;25949:9;25945:18;25937:26;;26009:9;26003:4;25999:20;25995:1;25984:9;25980:17;25973:47;26037:131;26163:4;26037:131;:::i;:::-;26029:139;;25756:419;;;:::o;26181:171::-;26321:23;26317:1;26309:6;26305:14;26298:47;26181:171;:::o;26358:366::-;26500:3;26521:67;26585:2;26580:3;26521:67;:::i;:::-;26514:74;;26597:93;26686:3;26597:93;:::i;:::-;26715:2;26710:3;26706:12;26699:19;;26358:366;;;:::o;26730:419::-;26896:4;26934:2;26923:9;26919:18;26911:26;;26983:9;26977:4;26973:20;26969:1;26958:9;26954:17;26947:47;27011:131;27137:4;27011:131;:::i;:::-;27003:139;;26730:419;;;:::o;27155:194::-;27195:4;27215:20;27233:1;27215:20;:::i;:::-;27210:25;;27249:20;27267:1;27249:20;:::i;:::-;27244:25;;27293:1;27290;27286:9;27278:17;;27317:1;27311:4;27308:11;27305:37;;;27322:18;;:::i;:::-;27305:37;27155:194;;;;:::o;27355:180::-;27403:77;27400:1;27393:88;27500:4;27497:1;27490:15;27524:4;27521:1;27514:15;27541:185;27581:1;27598:20;27616:1;27598:20;:::i;:::-;27593:25;;27632:20;27650:1;27632:20;:::i;:::-;27627:25;;27671:1;27661:35;;27676:18;;:::i;:::-;27661:35;27718:1;27715;27711:9;27706:14;;27541:185;;;;:::o;27732:220::-;27872:34;27868:1;27860:6;27856:14;27849:58;27941:3;27936:2;27928:6;27924:15;27917:28;27732:220;:::o;27958:366::-;28100:3;28121:67;28185:2;28180:3;28121:67;:::i;:::-;28114:74;;28197:93;28286:3;28197:93;:::i;:::-;28315:2;28310:3;28306:12;28299:19;;27958:366;;;:::o;28330:419::-;28496:4;28534:2;28523:9;28519:18;28511:26;;28583:9;28577:4;28573:20;28569:1;28558:9;28554:17;28547:47;28611:131;28737:4;28611:131;:::i;:::-;28603:139;;28330:419;;;:::o;28755:174::-;28895:26;28891:1;28883:6;28879:14;28872:50;28755:174;:::o;28935:366::-;29077:3;29098:67;29162:2;29157:3;29098:67;:::i;:::-;29091:74;;29174:93;29263:3;29174:93;:::i;:::-;29292:2;29287:3;29283:12;29276:19;;28935:366;;;:::o;29307:419::-;29473:4;29511:2;29500:9;29496:18;29488:26;;29560:9;29554:4;29550:20;29546:1;29535:9;29531:17;29524:47;29588:131;29714:4;29588:131;:::i;:::-;29580:139;;29307:419;;;:::o;29732:180::-;29780:77;29777:1;29770:88;29877:4;29874:1;29867:15;29901:4;29898:1;29891:15;29918:180;29966:77;29963:1;29956:88;30063:4;30060:1;30053:15;30087:4;30084:1;30077:15;30104:114;30171:6;30205:5;30199:12;30189:22;;30104:114;;;:::o;30224:184::-;30323:11;30357:6;30352:3;30345:19;30397:4;30392:3;30388:14;30373:29;;30224:184;;;;:::o;30414:132::-;30481:4;30504:3;30496:11;;30534:4;30529:3;30525:14;30517:22;;30414:132;;;:::o;30552:108::-;30629:24;30647:5;30629:24;:::i;:::-;30624:3;30617:37;30552:108;;:::o;30666:179::-;30735:10;30756:46;30798:3;30790:6;30756:46;:::i;:::-;30834:4;30829:3;30825:14;30811:28;;30666:179;;;;:::o;30851:113::-;30921:4;30953;30948:3;30944:14;30936:22;;30851:113;;;:::o;31000:732::-;31119:3;31148:54;31196:5;31148:54;:::i;:::-;31218:86;31297:6;31292:3;31218:86;:::i;:::-;31211:93;;31328:56;31378:5;31328:56;:::i;:::-;31407:7;31438:1;31423:284;31448:6;31445:1;31442:13;31423:284;;;31524:6;31518:13;31551:63;31610:3;31595:13;31551:63;:::i;:::-;31544:70;;31637:60;31690:6;31637:60;:::i;:::-;31627:70;;31483:224;31470:1;31467;31463:9;31458:14;;31423:284;;;31427:14;31723:3;31716:10;;31124:608;;;31000:732;;;;:::o;31738:831::-;32001:4;32039:3;32028:9;32024:19;32016:27;;32053:71;32121:1;32110:9;32106:17;32097:6;32053:71;:::i;:::-;32134:80;32210:2;32199:9;32195:18;32186:6;32134:80;:::i;:::-;32261:9;32255:4;32251:20;32246:2;32235:9;32231:18;32224:48;32289:108;32392:4;32383:6;32289:108;:::i;:::-;32281:116;;32407:72;32475:2;32464:9;32460:18;32451:6;32407:72;:::i;:::-;32489:73;32557:3;32546:9;32542:19;32533:6;32489:73;:::i;:::-;31738:831;;;;;;;;:::o;32575:351::-;32645:6;32694:2;32682:9;32673:7;32669:23;32665:32;32662:119;;;32700:79;;:::i;:::-;32662:119;32820:1;32845:64;32901:7;32892:6;32881:9;32877:22;32845:64;:::i;:::-;32835:74;;32791:128;32575:351;;;;:::o;32932:177::-;33072:29;33068:1;33060:6;33056:14;33049:53;32932:177;:::o;33115:366::-;33257:3;33278:67;33342:2;33337:3;33278:67;:::i;:::-;33271:74;;33354:93;33443:3;33354:93;:::i;:::-;33472:2;33467:3;33463:12;33456:19;;33115:366;;;:::o;33487:419::-;33653:4;33691:2;33680:9;33676:18;33668:26;;33740:9;33734:4;33730:20;33726:1;33715:9;33711:17;33704:47;33768:131;33894:4;33768:131;:::i;:::-;33760:139;;33487:419;;;:::o

Swarm Source

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