ETH Price: $3,491.67 (+3.34%)
Gas: 6 Gwei

Token

JKPT (JKPT)
 

Overview

Max Total Supply

1,000,000,000 JKPT

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: JKPT
Balance
127,044,152.450844575629756861 JKPT

Value
$0.00
0x0be2aa58c9a8f4c8c3a680047ecaf0f7aa9e166c
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:
JKPT

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 2024-05-31
*/

// SPDX-License-Identifier: MIT
/**
—
**/
pragma solidity >=0.8.7;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
    external
    view
    returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract JKPT is ERC20, Ownable {
    event SwapBackSuccess(
        uint256 tokenAmount,
        uint256 ethAmountReceived,
        bool success
    );
    bool private swapping;

    address public teamWallet; // Changed to a public variable
    address public jackpotWallet; // Changed to a public variable
    address public uniswapV2RouterAddress; // Changed to a public variable

    /*
        Chain               Factory                                     Routerv2
        Mainnet             0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f  0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        Ethereum Sepolia    0xB7f907f7A9eBC822a80BD25E224be42Ce0A698A0  0x425141165d3DE9FEC831896C016617a52363b687
        Arbitrum            0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9  0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24
        Avalanche           0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C  0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24
        BNB Chain           0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6  0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24
        Base                0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6  0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24
        Optimism            0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf  0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2
        Polygon             0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C  0xedf6066a2b290C185783862C7F4776A2C8077AD1
        Blast               0x5C346464d33F90bABaf70dB6388507CC889C1070  0xBB66Eb1c5e875933D44DAe661dbD80e5D9B03035
    */

    uint256 _totalSupply = 100_000_000 * 1e19; //
    uint256 _lp = (_totalSupply* 850)/1000; //

    uint256 public maxTransactionAmount = (_totalSupply * 10) / 1000; // 1% from total supply maxTransactionAmountTxn;
    uint256 public swapTokensAtAmount = (_totalSupply * 5) / 100000; // 0.005% swap tokens at this amount. (10_000_000 * 10) / 10000 = 0.1%(10000 tokens) of the total supply
    uint256 public maxWallet = (_totalSupply * 10) / 1000; // 1% from total supply maxWallet

    bool public limitsInEffect = false;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public constant BPS_BASE = 10000; // base points
    uint256 public buyFees = 0; // 0% buy tax
    uint256 public sellFees = 1000; // 10% sell tax
    uint256 public launchTimestamp;

    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    //blacklist bots
    mapping(address => bool) private blacklists;

    constructor(address _teamWallet, address _jackpotWallet, address _uniswapV2RouterAddress) ERC20("JKPT", "JKPT") {

        teamWallet = _teamWallet;
        jackpotWallet = _jackpotWallet;
        uniswapV2RouterAddress = _uniswapV2RouterAddress;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(_uniswapV2RouterAddress, true);
        excludeFromFees(address(teamWallet), true);
        excludeFromFees(address(jackpotWallet), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(0x9465BE6Ca4D27860937ae8d9BD4749C58141f078), true);
        excludeFromFees(address(0xc0461C0E4859F01Fc3e1C0182DC4c3533407fda5), true);
        excludeFromFees(address(0x04366aD174c649f50DD5994900de30d27B67Fd51), true);
        excludeFromFees(address(0xd26c1B9169F0FEB4Beb8711DC2D5Bf030d6c506E), true);
        excludeFromFees(address(0x000ECf16Db84060542917A376a70653D2620C60f), true);
        excludeFromFees(address(0x1Db330ac2aAd0007e650D0c92a981Ce7CC72Cf04), true);
        excludeFromFees(address(0xE59821cd67dA627835A771f768c67aB7d4E45053), true);
        excludeFromFees(address(0xc57eA05Bd405A4300b99065936b52ED07154dCF3), true);
        excludeFromFees(address(0x64E9577B978f63E13ED42001c39B6BEE4be71d07), true);
        excludeFromFees(address(0x0ba7933323EEE67D6850Cdd94aD269e5c3faeb13), true);
        excludeFromFees(address(0x742BcA3898A3E811d50578Cd0e4bC36Eea29DAA0), true);
        excludeFromFees(address(0x2a891C111F9f8164D0a14e417b711657c8F8c3aA), true);
        excludeFromFees(address(0xe66c505529366A02A0F538F0Bad05d28D698F6d8), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(teamWallet), true);
        excludeFromMaxTransaction(address(jackpotWallet), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(_uniswapV2RouterAddress, true);        
        excludeFromMaxTransaction(address(0xc57eA05Bd405A4300b99065936b52ED07154dCF3), true);
        excludeFromMaxTransaction(address(0x64E9577B978f63E13ED42001c39B6BEE4be71d07), true);
        excludeFromMaxTransaction(address(0x742BcA3898A3E811d50578Cd0e4bC36Eea29DAA0), true);
        excludeFromMaxTransaction(address(0xE59821cd67dA627835A771f768c67aB7d4E45053), true);
        excludeFromMaxTransaction(address(0xF56bD47E3c3721b428B1d555f94850E42a86DBb1), true);

        _mint(address(this), _lp);
        _mint(owner(),(_totalSupply-_lp));

    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchTimestamp = block.timestamp;
    }

    // remove limits after token is stable (sets sell fees to 5%)
    function removeLimits(uint256 s,uint256 b) external onlyOwner returns (bool) {
        limitsInEffect = false;
        sellFees = s;
        buyFees = b;
        return true;
    }

    function excludeFromMaxTransaction(
        address addressToExclude,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[addressToExclude] = isExcluded;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }

    function addLiquidity() external payable onlyOwner {
        // approve token transfer to cover all possible scenarios
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            uniswapV2RouterAddress
        );

        uniswapV2Router = _uniswapV2Router;
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        _approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
        // add the liquidity
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this), //token address
            balanceOf(address(this)), // liquidity amount
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(), // LP tokens are sent to the owner
            block.timestamp
        );
        limitsInEffect=true;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }

    function updateFeeWallet(address _teamWallet) public onlyOwner {
        teamWallet = _teamWallet;
    }

    function updatejackpotWallet(address _jackpotWallet) public onlyOwner {
        jackpotWallet = _jackpotWallet;
    }

    function updateMaxTransaction(uint amount) external onlyOwner{
        maxTransactionAmount = amount;
    }

    function updateSwapTokenTreshold(uint amount) external onlyOwner{
        swapTokensAtAmount = amount;
    }

    function updateMaxWallet(uint amount) external onlyOwner{
        maxWallet = amount;
    }

    function updateLimits(bool value) external onlyOwner{
        limitsInEffect = value;
    }

    function updateBuyFee(uint amount) external onlyOwner{
        require ((amount > 0 && amount <= BPS_BASE), "Must be a valid range");
        buyFees = amount;
    }

    function updateSellFee(uint amount) external onlyOwner{
        require ((amount > 0 && amount <= BPS_BASE), "Must be a valid range");
        sellFees = amount;
    }


    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not enabled yet."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                    //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );

                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );

                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;


        if (canSwap &&
        swapEnabled && //if this is true
            !swapping && //if this is false
            !automatedMarketMakerPairs[from] && //if this is false
            !_isExcludedFromFees[from] && //if this is false
            !_isExcludedFromFees[to] //if this is false
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            uint256 secondsSinceLaunch = block.timestamp - launchTimestamp;
            if (automatedMarketMakerPairs[to]) {
                // First 5 minutes the sell tax in % lowers linearly from 100% --> sellFee in bps
                if(secondsSinceLaunch <= 5 minutes) {
                    fees = amount - ((BPS_BASE - sellFees).mul(amount.mul(secondsSinceLaunch)).div(5 minutes).div(BPS_BASE));
                } else {
                    fees = amount.mul(sellFees).div(BPS_BASE);
                }
            }
                // on buy

            else if (automatedMarketMakerPairs[from]) {
                // First 5 minutes the buy tax in % lowers linearly from 100% --> buyFee in bps
                if(secondsSinceLaunch <= 5 minutes) {
                    fees = amount - ((BPS_BASE - buyFees).mul(amount.mul(secondsSinceLaunch)).div(5 minutes).div(BPS_BASE));
                } else {
                    fees = amount.mul(buyFees).div(BPS_BASE);
                }
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        /** */

    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) {
            return;
        }
        if (contractBalance >= swapTokensAtAmount) {
            uint256 amountToSwapForETH = swapTokensAtAmount;
            swapTokensForEth(amountToSwapForETH);
            uint256 amountEthToSend = address(this).balance;


            if(amountEthToSend>0){
                uint256 forJackpot = amountEthToSend * 70 / 100; // 70% to jackpot wallet, 30% to team wallet
                (bool success, ) = address(jackpotWallet).call{value: forJackpot}("");
                require(success,"unable to trf" );
                (success, ) = address(teamWallet).call{value: amountEthToSend - forJackpot}("");
                require(success,"unable to trf" );
            }

            emit SwapBackSuccess(amountToSwapForETH, amountEthToSend, true);
        }



    }

    function blacklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
            blacklists[_address[i]] = true;
        }
    }
    function unblacklist(address[] memory _address) external onlyOwner {
        for(uint8 i=0;i<_address.length;i++){
            blacklists[_address[i]] = false;
        }
    }


    function manualSwap() external onlyOwner {

        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0) {
            uint256 forJackpot = ethBalance * 70 / 100; // 70% to jackpot wallet, 30% to team wallet
            (bool success, ) = address(jackpotWallet).call{value: forJackpot}("");
            require(success,"unable to trf" );
            (success, ) = address(teamWallet).call{value: ethBalance - forJackpot}("");
            require(success,"unable to trf" );
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_jackpotWallet","type":"address"},{"internalType":"address","name":"_uniswapV2RouterAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountReceived","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SwapBackSuccess","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":"BPS_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToExclude","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jackpotWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamWallet","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokenTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_jackpotWallet","type":"address"}],"name":"updatejackpotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce8000000600a556103e8610352600a546100279190610b20565b6100319190610b8e565b600b556103e8600a80546100459190610b20565b61004f9190610b8e565b600c55620186a06005600a546100659190610b20565b61006f9190610b8e565b600d556103e8600a80546100839190610b20565b61008d9190610b8e565b600e555f600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff0219169083151502179055505f600f60026101000a81548160ff0219169083151502179055505f6010556103e86011553480156100f2575f80fd5b50604051615f91380380615f9183398181016040528101906101149190610c1c565b6040518060400160405280600481526020017f4a4b5054000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4a4b505400000000000000000000000000000000000000000000000000000000815250816003908161018f9190610e9d565b50806004908161019f9190610e9d565b5050506101be6101b36106cb60201b60201c565b6106d260201b60201c565b8260075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061029c61028f61079560201b60201c565b60016107bd60201b60201c565b6102ad8160016107bd60201b60201c565b6102df60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016107bd60201b60201c565b61031160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016107bd60201b60201c565b6103223060016107bd60201b60201c565b61033561dead60016107bd60201b60201c565b61035a739465be6ca4d27860937ae8d9bd4749c58141f07860016107bd60201b60201c565b61037f73c0461c0e4859f01fc3e1c0182dc4c3533407fda560016107bd60201b60201c565b6103a47304366ad174c649f50dd5994900de30d27b67fd5160016107bd60201b60201c565b6103c973d26c1b9169f0feb4beb8711dc2d5bf030d6c506e60016107bd60201b60201c565b6103ed720ecf16db84060542917a376a70653d2620c60f60016107bd60201b60201c565b610412731db330ac2aad0007e650d0c92a981ce7cc72cf0460016107bd60201b60201c565b61043773e59821cd67da627835a771f768c67ab7d4e4505360016107bd60201b60201c565b61045c73c57ea05bd405a4300b99065936b52ed07154dcf360016107bd60201b60201c565b6104817364e9577b978f63e13ed42001c39b6bee4be71d0760016107bd60201b60201c565b6104a6730ba7933323eee67d6850cdd94ad269e5c3faeb1360016107bd60201b60201c565b6104cb73742bca3898a3e811d50578cd0e4bc36eea29daa060016107bd60201b60201c565b6104f0732a891c111f9f8164d0a14e417b711657c8f8c3aa60016107bd60201b60201c565b61051573e66c505529366a02a0f538f0bad05d28d698f6d860016107bd60201b60201c565b61053361052661079560201b60201c565b600161089d60201b60201c565b61056560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161089d60201b60201c565b61059760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161089d60201b60201c565b6105a830600161089d60201b60201c565b6105bb61dead600161089d60201b60201c565b6105cc81600161089d60201b60201c565b6105f173c57ea05bd405a4300b99065936b52ed07154dcf3600161089d60201b60201c565b6106167364e9577b978f63e13ed42001c39b6bee4be71d07600161089d60201b60201c565b61063b73742bca3898a3e811d50578cd0e4bc36eea29daa0600161089d60201b60201c565b61066073e59821cd67da627835a771f768c67ab7d4e45053600161089d60201b60201c565b61068573f56bd47e3c3721b428b1d555f94850e42a86dbb1600161089d60201b60201c565b61069730600b5461097d60201b60201c565b6106c36106a861079560201b60201c565b600b54600a546106b89190610f6c565b61097d60201b60201c565b5050506110da565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107cb6106cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166107ef61079560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90610ff9565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6108ab6106cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166108cf61079560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90610ff9565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e290611061565b60405180910390fd5b6109fc5f8383610ae060201b60201c565b8060025f828254610a0d919061107f565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a5f919061107f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ac391906110c1565b60405180910390a3610adc5f8383610ae560201b60201c565b5050565b505050565b505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b2a82610aea565b9150610b3583610aea565b9250828202610b4381610aea565b91508282048414831517610b5a57610b59610af3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610b9882610aea565b9150610ba383610aea565b925082610bb357610bb2610b61565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610beb82610bc2565b9050919050565b610bfb81610be1565b8114610c05575f80fd5b50565b5f81519050610c1681610bf2565b92915050565b5f805f60608486031215610c3357610c32610bbe565b5b5f610c4086828701610c08565b9350506020610c5186828701610c08565b9250506040610c6286828701610c08565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ce757607f821691505b602082108103610cfa57610cf9610ca3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d5c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610d21565b610d668683610d21565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610da1610d9c610d9784610aea565b610d7e565b610aea565b9050919050565b5f819050919050565b610dba83610d87565b610dce610dc682610da8565b848454610d2d565b825550505050565b5f90565b610de2610dd6565b610ded818484610db1565b505050565b5b81811015610e1057610e055f82610dda565b600181019050610df3565b5050565b601f821115610e5557610e2681610d00565b610e2f84610d12565b81016020851015610e3e578190505b610e52610e4a85610d12565b830182610df2565b50505b505050565b5f82821c905092915050565b5f610e755f1984600802610e5a565b1980831691505092915050565b5f610e8d8383610e66565b9150826002028217905092915050565b610ea682610c6c565b67ffffffffffffffff811115610ebf57610ebe610c76565b5b610ec98254610cd0565b610ed4828285610e14565b5f60209050601f831160018114610f05575f8415610ef3578287015190505b610efd8582610e82565b865550610f64565b601f198416610f1386610d00565b5f5b82811015610f3a57848901518255600182019150602085019450602081019050610f15565b86831015610f575784890151610f53601f891682610e66565b8355505b6001600288020188555050505b505050505050565b5f610f7682610aea565b9150610f8183610aea565b9250828203905081811115610f9957610f98610af3565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610fe3602083610f9f565b9150610fee82610faf565b602082019050919050565b5f6020820190508181035f83015261101081610fd7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61104b601f83610f9f565b915061105682611017565b602082019050919050565b5f6020820190508181035f8301526110788161103f565b9050919050565b5f61108982610aea565b915061109483610aea565b92508282019050808211156110ac576110ab610af3565b5b92915050565b6110bb81610aea565b82525050565b5f6020820190506110d45f8301846110b2565b92915050565b614eaa806110e75f395ff3fe6080604052600436106102e7575f3560e01c80636ddd17131161018f578063a9059cbb116100db578063dd62ed3e11610094578063e4748b9e1161006e578063e4748b9e14610b16578063e8078d9414610b40578063f2fde38b14610b4a578063f8b45b0514610b72576102ee565b8063dd62ed3e14610a86578063e0f3ccf514610ac2578063e2f4560514610aec576102ee565b8063a9059cbb1461096a578063b62496f5146109a6578063bbc0c742146109e2578063bfab653514610a0c578063c024666814610a34578063c8c8ebe414610a5c576102ee565b80638da5cb5b116101485780639a7a23d6116101225780639a7a23d6146108b45780639bed0589146108dc5780639eaa1b0914610904578063a457c2d71461092e576102ee565b80638da5cb5b14610838578063924de9b71461086257806395d89b411461088a576102ee565b80636ddd17131461075657806370a0823114610780578063715018a6146107bc57806374326f53146107d25780637571336a146107fa5780638a8c523c14610822576102ee565b80632d2f244b1161024e5780634a62bb651161020757806359927044116101e1578063599270441461069e57806359bd962a146106c857806365cf7c9b14610704578063667185241461072e576102ee565b80634a62bb65146106225780634fbee1931461064c57806351bc3c8514610688576102ee565b80632d2f244b14610516578063313ce56714610540578063395093511461056a578063467abe0a146105a657806349bd5a5e146105ce5780634a377e1d146105f8576102ee565b806318160ddd116102a057806318160ddd1461040e5780631c499ab0146104385780631d933a4a1461046057806323b872dd146104885780632564b8a1146104c457806327c8f835146104ec576102ee565b8063041f173f146102f25780630517d13d1461031a57806306fdde0314610342578063095ea7b31461036c57806310d5de53146103a85780631694505e146103e4576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b5061031860048036038101906103139190613d08565b610b9c565b005b348015610325575f80fd5b50610340600480360381019061033b9190613d82565b610caf565b005b34801561034d575f80fd5b50610356610d35565b6040516103639190613e0d565b60405180910390f35b348015610377575f80fd5b50610392600480360381019061038d9190613e2d565b610dc5565b60405161039f9190613e85565b60405180910390f35b3480156103b3575f80fd5b506103ce60048036038101906103c99190613e9e565b610de2565b6040516103db9190613e85565b60405180910390f35b3480156103ef575f80fd5b506103f8610dff565b6040516104059190613f24565b60405180910390f35b348015610419575f80fd5b50610422610e24565b60405161042f9190613f4c565b60405180910390f35b348015610443575f80fd5b5061045e60048036038101906104599190613d82565b610e2d565b005b34801561046b575f80fd5b5061048660048036038101906104819190613d82565b610eb3565b005b348015610493575f80fd5b506104ae60048036038101906104a99190613f65565b610f89565b6040516104bb9190613e85565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190613e9e565b61107b565b005b3480156104f7575f80fd5b5061050061113a565b60405161050d9190613fc4565b60405180910390f35b348015610521575f80fd5b5061052a611140565b6040516105379190613fc4565b60405180910390f35b34801561054b575f80fd5b50610554611165565b6040516105619190613ff8565b60405180910390f35b348015610575575f80fd5b50610590600480360381019061058b9190613e2d565b61116d565b60405161059d9190613e85565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190613d82565b611214565b005b3480156105d9575f80fd5b506105e26112ea565b6040516105ef9190613fc4565b60405180910390f35b348015610603575f80fd5b5061060c61130f565b6040516106199190613fc4565b60405180910390f35b34801561062d575f80fd5b50610636611334565b6040516106439190613e85565b60405180910390f35b348015610657575f80fd5b50610672600480360381019061066d9190613e9e565b611346565b60405161067f9190613e85565b60405180910390f35b348015610693575f80fd5b5061069c611398565b005b3480156106a9575f80fd5b506106b26115ff565b6040516106bf9190613fc4565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190614011565b611624565b6040516106fb9190613e85565b60405180910390f35b34801561070f575f80fd5b506107186116d2565b6040516107259190613f4c565b60405180910390f35b348015610739575f80fd5b50610754600480360381019061074f9190613e9e565b6116d8565b005b348015610761575f80fd5b5061076a611797565b6040516107779190613e85565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a19190613e9e565b6117aa565b6040516107b39190613f4c565b60405180910390f35b3480156107c7575f80fd5b506107d06117ef565b005b3480156107dd575f80fd5b506107f860048036038101906107f39190614079565b611876565b005b348015610805575f80fd5b50610820600480360381019061081b91906140a4565b61190e565b005b34801561082d575f80fd5b506108366119e2565b005b348015610843575f80fd5b5061084c611a9d565b6040516108599190613fc4565b60405180910390f35b34801561086d575f80fd5b5061088860048036038101906108839190614079565b611ac5565b005b348015610895575f80fd5b5061089e611b5e565b6040516108ab9190613e0d565b60405180910390f35b3480156108bf575f80fd5b506108da60048036038101906108d591906140a4565b611bee565b005b3480156108e7575f80fd5b5061090260048036038101906108fd9190613d82565b611d07565b005b34801561090f575f80fd5b50610918611d8d565b6040516109259190613f4c565b60405180910390f35b348015610939575f80fd5b50610954600480360381019061094f9190613e2d565b611d93565b6040516109619190613e85565b60405180910390f35b348015610975575f80fd5b50610990600480360381019061098b9190613e2d565b611e79565b60405161099d9190613e85565b60405180910390f35b3480156109b1575f80fd5b506109cc60048036038101906109c79190613e9e565b611e96565b6040516109d99190613e85565b60405180910390f35b3480156109ed575f80fd5b506109f6611eb3565b604051610a039190613e85565b60405180910390f35b348015610a17575f80fd5b50610a326004803603810190610a2d9190613d08565b611ec6565b005b348015610a3f575f80fd5b50610a5a6004803603810190610a5591906140a4565b611fd8565b005b348015610a67575f80fd5b50610a706120ac565b604051610a7d9190613f4c565b60405180910390f35b348015610a91575f80fd5b50610aac6004803603810190610aa791906140e2565b6120b2565b604051610ab99190613f4c565b60405180910390f35b348015610acd575f80fd5b50610ad6612134565b604051610ae39190613f4c565b60405180910390f35b348015610af7575f80fd5b50610b0061213a565b604051610b0d9190613f4c565b60405180910390f35b348015610b21575f80fd5b50610b2a612140565b604051610b379190613f4c565b60405180910390f35b610b48612146565b005b348015610b55575f80fd5b50610b706004803603810190610b6b9190613e9e565b612525565b005b348015610b7d575f80fd5b50610b8661261b565b604051610b939190613f4c565b60405180910390f35b610ba4612621565b73ffffffffffffffffffffffffffffffffffffffff16610bc2611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f9061416a565b60405180910390fd5b5f5b81518160ff161015610cab57600160185f848460ff1681518110610c4157610c40614188565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ca3906141e2565b915050610c1a565b5050565b610cb7612621565b73ffffffffffffffffffffffffffffffffffffffff16610cd5611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d229061416a565b60405180910390fd5b80600c8190555050565b606060038054610d4490614237565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7090614237565b8015610dbb5780601f10610d9257610100808354040283529160200191610dbb565b820191905f5260205f20905b815481529060010190602001808311610d9e57829003601f168201915b5050505050905090565b5f610dd8610dd1612621565b8484612628565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610e35612621565b73ffffffffffffffffffffffffffffffffffffffff16610e53611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea09061416a565b60405180910390fd5b80600e8190555050565b610ebb612621565b73ffffffffffffffffffffffffffffffffffffffff16610ed9611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f269061416a565b60405180910390fd5b5f81118015610f4057506127108111155b610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906142b1565b60405180910390fd5b8060118190555050565b5f610f958484846127eb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fdc612621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110529061433f565b60405180910390fd5b61106f85611067612621565b858403612628565b60019150509392505050565b611083612621565b73ffffffffffffffffffffffffffffffffffffffff166110a1611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee9061416a565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61dead81565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f61120a611179612621565b848460015f611186612621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611205919061435d565b612628565b6001905092915050565b61121c612621565b73ffffffffffffffffffffffffffffffffffffffff1661123a611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112879061416a565b60405180910390fd5b5f811180156112a157506127108111155b6112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906142b1565b60405180910390fd5b8060108190555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5f9054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6113a0612621565b73ffffffffffffffffffffffffffffffffffffffff166113be611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b9061416a565b60405180910390fd5b5f61141e306117aa565b90505f8111156114325761143181613316565b5b5f4790505f8111156115fb575f606460468361144e9190614390565b61145891906143fe565b90505f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516114a09061445b565b5f6040518083038185875af1925050503d805f81146114da576040519150601f19603f3d011682016040523d82523d5f602084013e6114df565b606091505b5050905080611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a906144b9565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828461156791906144d7565b6040516115739061445b565b5f6040518083038185875af1925050503d805f81146115ad576040519150601f19603f3d011682016040523d82523d5f602084013e6115b2565b606091505b505080915050806115f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ef906144b9565b60405180910390fd5b50505b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61162d612621565b73ffffffffffffffffffffffffffffffffffffffff1661164b611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146116a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116989061416a565b60405180910390fd5b5f600f5f6101000a81548160ff02191690831515021790555082601181905550816010819055506001905092915050565b60125481565b6116e0612621565b73ffffffffffffffffffffffffffffffffffffffff166116fe611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b9061416a565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117f7612621565b73ffffffffffffffffffffffffffffffffffffffff16611815611a9d565b73ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118629061416a565b60405180910390fd5b6118745f61354c565b565b61187e612621565b73ffffffffffffffffffffffffffffffffffffffff1661189c611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e99061416a565b60405180910390fd5b80600f5f6101000a81548160ff02191690831515021790555050565b611916612621565b73ffffffffffffffffffffffffffffffffffffffff16611934611a9d565b73ffffffffffffffffffffffffffffffffffffffff161461198a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119819061416a565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6119ea612621565b73ffffffffffffffffffffffffffffffffffffffff16611a08611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a559061416a565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555042601281905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611acd612621565b73ffffffffffffffffffffffffffffffffffffffff16611aeb611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b389061416a565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b606060048054611b6d90614237565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9990614237565b8015611be45780601f10611bbb57610100808354040283529160200191611be4565b820191905f5260205f20905b815481529060010190602001808311611bc757829003601f168201915b5050505050905090565b611bf6612621565b73ffffffffffffffffffffffffffffffffffffffff16611c14611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c619061416a565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf09061457a565b60405180910390fd5b611d03828261360f565b5050565b611d0f612621565b73ffffffffffffffffffffffffffffffffffffffff16611d2d611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a9061416a565b60405180910390fd5b80600d8190555050565b61271081565b5f8060015f611da0612621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190614608565b60405180910390fd5b611e6e611e65612621565b85858403612628565b600191505092915050565b5f611e8c611e85612621565b84846127eb565b6001905092915050565b6017602052805f5260405f205f915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611ece612621565b73ffffffffffffffffffffffffffffffffffffffff16611eec611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f399061416a565b60405180910390fd5b5f5b81518160ff161015611fd4575f60185f848460ff1681518110611f6a57611f69614188565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611fcc906141e2565b915050611f44565b5050565b611fe0612621565b73ffffffffffffffffffffffffffffffffffffffff16611ffe611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b9061416a565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b600d5481565b60105481565b61214e612621565b73ffffffffffffffffffffffffffffffffffffffff1661216c611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b99061416a565b60405180910390fd5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061223281600161190e565b6122663060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612261306117aa565b612628565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122d3919061463a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235c919061463a565b6040518363ffffffff1660e01b8152600401612379929190614665565b6020604051808303815f875af1158015612395573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b9919061463a565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061242460145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161190e565b61245060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161360f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430612498306117aa565b5f806124a2611a9d565b426040518863ffffffff1660e01b81526004016124c4969594939291906146c5565b60606040518083038185885af11580156124e0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906125059190614738565b5050506001600f5f6101000a81548160ff02191690831515021790555050565b61252d612621565b73ffffffffffffffffffffffffffffffffffffffff1661254b611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125989061416a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361260f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612606906147f8565b60405180910390fd5b6126188161354c565b50565b600e5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d90614886565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614914565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127de9190613f4c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612850906149a2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614a30565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612965575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90614a98565b60405180910390fd5b5f81036129bb576129b683835f613667565b613311565b600f5f9054906101000a900460ff1615612e9f576129d7611a9d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a455750612a15611a9d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a7d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ad05750600660149054906101000a900460ff16155b15612e9e57600f60019054906101000a900460ff16612bc45760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b84575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614b00565b60405180910390fd5b5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c61575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d0857600c54811115612cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca290614b8e565b60405180910390fd5b600e54612cb7836117aa565b82612cc2919061435d565b1115612d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfa90614bf6565b60405180910390fd5b612e9d565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612da5575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612df457600c54811115612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de690614c84565b60405180910390fd5b612e9c565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e9b57600e54612e4e836117aa565b82612e59919061435d565b1115612e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9190614bf6565b60405180910390fd5b5b5b5b5b5b5f612ea9306117aa565b90505f600d548210159050808015612ecd5750600f60029054906101000a900460ff165b8015612ee65750600660149054906101000a900460ff16155b8015612f39575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f8c575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fdf575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613022576001600660146101000a81548160ff0219169083151502179055506130076138dc565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806130d1575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156130da575f90505b5f8115613301575f601254426130f091906144d7565b905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156131e95761012c81116131b8576131a661271061319861012c61318a61316c868c613b1990919063ffffffff16565b60115461271061317c91906144d7565b613b1990919063ffffffff16565b613b2e90919063ffffffff16565b613b2e90919063ffffffff16565b866131b191906144d7565b91506131e4565b6131e16127106131d360115489613b1990919063ffffffff16565b613b2e90919063ffffffff16565b91505b6132dd565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156132dc5761012c81116132af5761329d61271061328f61012c613281613263868c613b1990919063ffffffff16565b60105461271061327391906144d7565b613b1990919063ffffffff16565b613b2e90919063ffffffff16565b613b2e90919063ffffffff16565b866132a891906144d7565b91506132db565b6132d86127106132ca60105489613b1990919063ffffffff16565b613b2e90919063ffffffff16565b91505b5b5b5f8211156132f1576132f0883084613667565b5b81866132fd91906144d7565b9550505b61330c878787613667565b505050505b505050565b5f600267ffffffffffffffff81111561333257613331613b72565b5b6040519080825280602002602001820160405280156133605781602001602082028036833780820191505090505b50905030815f8151811061337757613376614188565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561341b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061343f919061463a565b8160018151811061345357613452614188565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134b93060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612628565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161351b959493929190614d59565b5f604051808303815f87803b158015613532575f80fd5b505af1158015613544573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136cc906149a2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373a90614a30565b60405180910390fd5b61374e838383613b43565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156137d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c890614e21565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461385f919061435d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138c39190613f4c565b60405180910390a36138d6848484613b48565b50505050565b5f6138e6306117aa565b90505f81036138f55750613b17565b600d548110613b15575f600d54905061390d81613316565b5f4790505f811115613ad6575f60646046836139299190614390565b61393391906143fe565b90505f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161397b9061445b565b5f6040518083038185875af1925050503d805f81146139b5576040519150601f19603f3d011682016040523d82523d5f602084013e6139ba565b606091505b50509050806139fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f5906144b9565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168284613a4291906144d7565b604051613a4e9061445b565b5f6040518083038185875af1925050503d805f8114613a88576040519150601f19603f3d011682016040523d82523d5f602084013e613a8d565b606091505b50508091505080613ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aca906144b9565b60405180910390fd5b50505b7fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff82826001604051613b0a93929190614e3f565b60405180910390a150505b505b565b5f8183613b269190614390565b905092915050565b5f8183613b3b91906143fe565b905092915050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ba882613b62565b810181811067ffffffffffffffff82111715613bc757613bc6613b72565b5b80604052505050565b5f613bd9613b4d565b9050613be58282613b9f565b919050565b5f67ffffffffffffffff821115613c0457613c03613b72565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c4282613c19565b9050919050565b613c5281613c38565b8114613c5c575f80fd5b50565b5f81359050613c6d81613c49565b92915050565b5f613c85613c8084613bea565b613bd0565b90508083825260208201905060208402830185811115613ca857613ca7613c15565b5b835b81811015613cd15780613cbd8882613c5f565b845260208401935050602081019050613caa565b5050509392505050565b5f82601f830112613cef57613cee613b5e565b5b8135613cff848260208601613c73565b91505092915050565b5f60208284031215613d1d57613d1c613b56565b5b5f82013567ffffffffffffffff811115613d3a57613d39613b5a565b5b613d4684828501613cdb565b91505092915050565b5f819050919050565b613d6181613d4f565b8114613d6b575f80fd5b50565b5f81359050613d7c81613d58565b92915050565b5f60208284031215613d9757613d96613b56565b5b5f613da484828501613d6e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f613ddf82613dad565b613de98185613db7565b9350613df9818560208601613dc7565b613e0281613b62565b840191505092915050565b5f6020820190508181035f830152613e258184613dd5565b905092915050565b5f8060408385031215613e4357613e42613b56565b5b5f613e5085828601613c5f565b9250506020613e6185828601613d6e565b9150509250929050565b5f8115159050919050565b613e7f81613e6b565b82525050565b5f602082019050613e985f830184613e76565b92915050565b5f60208284031215613eb357613eb2613b56565b5b5f613ec084828501613c5f565b91505092915050565b5f819050919050565b5f613eec613ee7613ee284613c19565b613ec9565b613c19565b9050919050565b5f613efd82613ed2565b9050919050565b5f613f0e82613ef3565b9050919050565b613f1e81613f04565b82525050565b5f602082019050613f375f830184613f15565b92915050565b613f4681613d4f565b82525050565b5f602082019050613f5f5f830184613f3d565b92915050565b5f805f60608486031215613f7c57613f7b613b56565b5b5f613f8986828701613c5f565b9350506020613f9a86828701613c5f565b9250506040613fab86828701613d6e565b9150509250925092565b613fbe81613c38565b82525050565b5f602082019050613fd75f830184613fb5565b92915050565b5f60ff82169050919050565b613ff281613fdd565b82525050565b5f60208201905061400b5f830184613fe9565b92915050565b5f806040838503121561402757614026613b56565b5b5f61403485828601613d6e565b925050602061404585828601613d6e565b9150509250929050565b61405881613e6b565b8114614062575f80fd5b50565b5f813590506140738161404f565b92915050565b5f6020828403121561408e5761408d613b56565b5b5f61409b84828501614065565b91505092915050565b5f80604083850312156140ba576140b9613b56565b5b5f6140c785828601613c5f565b92505060206140d885828601614065565b9150509250929050565b5f80604083850312156140f8576140f7613b56565b5b5f61410585828601613c5f565b925050602061411685828601613c5f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614154602083613db7565b915061415f82614120565b602082019050919050565b5f6020820190508181035f83015261418181614148565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6141ec82613fdd565b915060ff82036141ff576141fe6141b5565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061424e57607f821691505b6020821081036142615761426061420a565b5b50919050565b7f4d75737420626520612076616c69642072616e676500000000000000000000005f82015250565b5f61429b601583613db7565b91506142a682614267565b602082019050919050565b5f6020820190508181035f8301526142c88161428f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614329602883613db7565b9150614334826142cf565b604082019050919050565b5f6020820190508181035f8301526143568161431d565b9050919050565b5f61436782613d4f565b915061437283613d4f565b925082820190508082111561438a576143896141b5565b5b92915050565b5f61439a82613d4f565b91506143a583613d4f565b92508282026143b381613d4f565b915082820484148315176143ca576143c96141b5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61440882613d4f565b915061441383613d4f565b925082614423576144226143d1565b5b828204905092915050565b5f81905092915050565b50565b5f6144465f8361442e565b915061445182614438565b5f82019050919050565b5f6144658261443b565b9150819050919050565b7f756e61626c6520746f20747266000000000000000000000000000000000000005f82015250565b5f6144a3600d83613db7565b91506144ae8261446f565b602082019050919050565b5f6020820190508181035f8301526144d081614497565b9050919050565b5f6144e182613d4f565b91506144ec83613d4f565b9250828203905081811115614504576145036141b5565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614564603983613db7565b915061456f8261450a565b604082019050919050565b5f6020820190508181035f83015261459181614558565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145f2602583613db7565b91506145fd82614598565b604082019050919050565b5f6020820190508181035f83015261461f816145e6565b9050919050565b5f8151905061463481613c49565b92915050565b5f6020828403121561464f5761464e613b56565b5b5f61465c84828501614626565b91505092915050565b5f6040820190506146785f830185613fb5565b6146856020830184613fb5565b9392505050565b5f819050919050565b5f6146af6146aa6146a58461468c565b613ec9565b613d4f565b9050919050565b6146bf81614695565b82525050565b5f60c0820190506146d85f830189613fb5565b6146e56020830188613f3d565b6146f260408301876146b6565b6146ff60608301866146b6565b61470c6080830185613fb5565b61471960a0830184613f3d565b979650505050505050565b5f8151905061473281613d58565b92915050565b5f805f6060848603121561474f5761474e613b56565b5b5f61475c86828701614724565b935050602061476d86828701614724565b925050604061477e86828701614724565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6147e2602683613db7565b91506147ed82614788565b604082019050919050565b5f6020820190508181035f83015261480f816147d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614870602483613db7565b915061487b82614816565b604082019050919050565b5f6020820190508181035f83015261489d81614864565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148fe602283613db7565b9150614909826148a4565b604082019050919050565b5f6020820190508181035f83015261492b816148f2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61498c602583613db7565b915061499782614932565b604082019050919050565b5f6020820190508181035f8301526149b981614980565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a1a602383613db7565b9150614a25826149c0565b604082019050919050565b5f6020820190508181035f830152614a4781614a0e565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f614a82600b83613db7565b9150614a8d82614a4e565b602082019050919050565b5f6020820190508181035f830152614aaf81614a76565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965742e00000000005f82015250565b5f614aea601b83613db7565b9150614af582614ab6565b602082019050919050565b5f6020820190508181035f830152614b1781614ade565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614b78603583613db7565b9150614b8382614b1e565b604082019050919050565b5f6020820190508181035f830152614ba581614b6c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614be0601383613db7565b9150614beb82614bac565b602082019050919050565b5f6020820190508181035f830152614c0d81614bd4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614c6e603683613db7565b9150614c7982614c14565b604082019050919050565b5f6020820190508181035f830152614c9b81614c62565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614cd481613c38565b82525050565b5f614ce58383614ccb565b60208301905092915050565b5f602082019050919050565b5f614d0782614ca2565b614d118185614cac565b9350614d1c83614cbc565b805f5b83811015614d4c578151614d338882614cda565b9750614d3e83614cf1565b925050600181019050614d1f565b5085935050505092915050565b5f60a082019050614d6c5f830188613f3d565b614d7960208301876146b6565b8181036040830152614d8b8186614cfd565b9050614d9a6060830185613fb5565b614da76080830184613f3d565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e0b602683613db7565b9150614e1682614db1565b604082019050919050565b5f6020820190508181035f830152614e3881614dff565b9050919050565b5f606082019050614e525f830186613f3d565b614e5f6020830185613f3d565b614e6c6040830184613e76565b94935050505056fea2646970667358221220aeb9729b1a6c134b976c6ab00fe79711d0d750e4c133da9217997e0b4979c3b764736f6c634300081900330000000000000000000000002a891c111f9f8164d0a14e417b711657c8f8c3aa0000000000000000000000000ba7933323eee67d6850cdd94ad269e5c3faeb130000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c80636ddd17131161018f578063a9059cbb116100db578063dd62ed3e11610094578063e4748b9e1161006e578063e4748b9e14610b16578063e8078d9414610b40578063f2fde38b14610b4a578063f8b45b0514610b72576102ee565b8063dd62ed3e14610a86578063e0f3ccf514610ac2578063e2f4560514610aec576102ee565b8063a9059cbb1461096a578063b62496f5146109a6578063bbc0c742146109e2578063bfab653514610a0c578063c024666814610a34578063c8c8ebe414610a5c576102ee565b80638da5cb5b116101485780639a7a23d6116101225780639a7a23d6146108b45780639bed0589146108dc5780639eaa1b0914610904578063a457c2d71461092e576102ee565b80638da5cb5b14610838578063924de9b71461086257806395d89b411461088a576102ee565b80636ddd17131461075657806370a0823114610780578063715018a6146107bc57806374326f53146107d25780637571336a146107fa5780638a8c523c14610822576102ee565b80632d2f244b1161024e5780634a62bb651161020757806359927044116101e1578063599270441461069e57806359bd962a146106c857806365cf7c9b14610704578063667185241461072e576102ee565b80634a62bb65146106225780634fbee1931461064c57806351bc3c8514610688576102ee565b80632d2f244b14610516578063313ce56714610540578063395093511461056a578063467abe0a146105a657806349bd5a5e146105ce5780634a377e1d146105f8576102ee565b806318160ddd116102a057806318160ddd1461040e5780631c499ab0146104385780631d933a4a1461046057806323b872dd146104885780632564b8a1146104c457806327c8f835146104ec576102ee565b8063041f173f146102f25780630517d13d1461031a57806306fdde0314610342578063095ea7b31461036c57806310d5de53146103a85780631694505e146103e4576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b5061031860048036038101906103139190613d08565b610b9c565b005b348015610325575f80fd5b50610340600480360381019061033b9190613d82565b610caf565b005b34801561034d575f80fd5b50610356610d35565b6040516103639190613e0d565b60405180910390f35b348015610377575f80fd5b50610392600480360381019061038d9190613e2d565b610dc5565b60405161039f9190613e85565b60405180910390f35b3480156103b3575f80fd5b506103ce60048036038101906103c99190613e9e565b610de2565b6040516103db9190613e85565b60405180910390f35b3480156103ef575f80fd5b506103f8610dff565b6040516104059190613f24565b60405180910390f35b348015610419575f80fd5b50610422610e24565b60405161042f9190613f4c565b60405180910390f35b348015610443575f80fd5b5061045e60048036038101906104599190613d82565b610e2d565b005b34801561046b575f80fd5b5061048660048036038101906104819190613d82565b610eb3565b005b348015610493575f80fd5b506104ae60048036038101906104a99190613f65565b610f89565b6040516104bb9190613e85565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190613e9e565b61107b565b005b3480156104f7575f80fd5b5061050061113a565b60405161050d9190613fc4565b60405180910390f35b348015610521575f80fd5b5061052a611140565b6040516105379190613fc4565b60405180910390f35b34801561054b575f80fd5b50610554611165565b6040516105619190613ff8565b60405180910390f35b348015610575575f80fd5b50610590600480360381019061058b9190613e2d565b61116d565b60405161059d9190613e85565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190613d82565b611214565b005b3480156105d9575f80fd5b506105e26112ea565b6040516105ef9190613fc4565b60405180910390f35b348015610603575f80fd5b5061060c61130f565b6040516106199190613fc4565b60405180910390f35b34801561062d575f80fd5b50610636611334565b6040516106439190613e85565b60405180910390f35b348015610657575f80fd5b50610672600480360381019061066d9190613e9e565b611346565b60405161067f9190613e85565b60405180910390f35b348015610693575f80fd5b5061069c611398565b005b3480156106a9575f80fd5b506106b26115ff565b6040516106bf9190613fc4565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190614011565b611624565b6040516106fb9190613e85565b60405180910390f35b34801561070f575f80fd5b506107186116d2565b6040516107259190613f4c565b60405180910390f35b348015610739575f80fd5b50610754600480360381019061074f9190613e9e565b6116d8565b005b348015610761575f80fd5b5061076a611797565b6040516107779190613e85565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a19190613e9e565b6117aa565b6040516107b39190613f4c565b60405180910390f35b3480156107c7575f80fd5b506107d06117ef565b005b3480156107dd575f80fd5b506107f860048036038101906107f39190614079565b611876565b005b348015610805575f80fd5b50610820600480360381019061081b91906140a4565b61190e565b005b34801561082d575f80fd5b506108366119e2565b005b348015610843575f80fd5b5061084c611a9d565b6040516108599190613fc4565b60405180910390f35b34801561086d575f80fd5b5061088860048036038101906108839190614079565b611ac5565b005b348015610895575f80fd5b5061089e611b5e565b6040516108ab9190613e0d565b60405180910390f35b3480156108bf575f80fd5b506108da60048036038101906108d591906140a4565b611bee565b005b3480156108e7575f80fd5b5061090260048036038101906108fd9190613d82565b611d07565b005b34801561090f575f80fd5b50610918611d8d565b6040516109259190613f4c565b60405180910390f35b348015610939575f80fd5b50610954600480360381019061094f9190613e2d565b611d93565b6040516109619190613e85565b60405180910390f35b348015610975575f80fd5b50610990600480360381019061098b9190613e2d565b611e79565b60405161099d9190613e85565b60405180910390f35b3480156109b1575f80fd5b506109cc60048036038101906109c79190613e9e565b611e96565b6040516109d99190613e85565b60405180910390f35b3480156109ed575f80fd5b506109f6611eb3565b604051610a039190613e85565b60405180910390f35b348015610a17575f80fd5b50610a326004803603810190610a2d9190613d08565b611ec6565b005b348015610a3f575f80fd5b50610a5a6004803603810190610a5591906140a4565b611fd8565b005b348015610a67575f80fd5b50610a706120ac565b604051610a7d9190613f4c565b60405180910390f35b348015610a91575f80fd5b50610aac6004803603810190610aa791906140e2565b6120b2565b604051610ab99190613f4c565b60405180910390f35b348015610acd575f80fd5b50610ad6612134565b604051610ae39190613f4c565b60405180910390f35b348015610af7575f80fd5b50610b0061213a565b604051610b0d9190613f4c565b60405180910390f35b348015610b21575f80fd5b50610b2a612140565b604051610b379190613f4c565b60405180910390f35b610b48612146565b005b348015610b55575f80fd5b50610b706004803603810190610b6b9190613e9e565b612525565b005b348015610b7d575f80fd5b50610b8661261b565b604051610b939190613f4c565b60405180910390f35b610ba4612621565b73ffffffffffffffffffffffffffffffffffffffff16610bc2611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f9061416a565b60405180910390fd5b5f5b81518160ff161015610cab57600160185f848460ff1681518110610c4157610c40614188565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ca3906141e2565b915050610c1a565b5050565b610cb7612621565b73ffffffffffffffffffffffffffffffffffffffff16610cd5611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d229061416a565b60405180910390fd5b80600c8190555050565b606060038054610d4490614237565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7090614237565b8015610dbb5780601f10610d9257610100808354040283529160200191610dbb565b820191905f5260205f20905b815481529060010190602001808311610d9e57829003601f168201915b5050505050905090565b5f610dd8610dd1612621565b8484612628565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610e35612621565b73ffffffffffffffffffffffffffffffffffffffff16610e53611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea09061416a565b60405180910390fd5b80600e8190555050565b610ebb612621565b73ffffffffffffffffffffffffffffffffffffffff16610ed9611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f269061416a565b60405180910390fd5b5f81118015610f4057506127108111155b610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906142b1565b60405180910390fd5b8060118190555050565b5f610f958484846127eb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fdc612621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110529061433f565b60405180910390fd5b61106f85611067612621565b858403612628565b60019150509392505050565b611083612621565b73ffffffffffffffffffffffffffffffffffffffff166110a1611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee9061416a565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61dead81565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f61120a611179612621565b848460015f611186612621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611205919061435d565b612628565b6001905092915050565b61121c612621565b73ffffffffffffffffffffffffffffffffffffffff1661123a611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112879061416a565b60405180910390fd5b5f811180156112a157506127108111155b6112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906142b1565b60405180910390fd5b8060108190555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5f9054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6113a0612621565b73ffffffffffffffffffffffffffffffffffffffff166113be611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b9061416a565b60405180910390fd5b5f61141e306117aa565b90505f8111156114325761143181613316565b5b5f4790505f8111156115fb575f606460468361144e9190614390565b61145891906143fe565b90505f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516114a09061445b565b5f6040518083038185875af1925050503d805f81146114da576040519150601f19603f3d011682016040523d82523d5f602084013e6114df565b606091505b5050905080611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a906144b9565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828461156791906144d7565b6040516115739061445b565b5f6040518083038185875af1925050503d805f81146115ad576040519150601f19603f3d011682016040523d82523d5f602084013e6115b2565b606091505b505080915050806115f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ef906144b9565b60405180910390fd5b50505b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61162d612621565b73ffffffffffffffffffffffffffffffffffffffff1661164b611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146116a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116989061416a565b60405180910390fd5b5f600f5f6101000a81548160ff02191690831515021790555082601181905550816010819055506001905092915050565b60125481565b6116e0612621565b73ffffffffffffffffffffffffffffffffffffffff166116fe611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b9061416a565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117f7612621565b73ffffffffffffffffffffffffffffffffffffffff16611815611a9d565b73ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118629061416a565b60405180910390fd5b6118745f61354c565b565b61187e612621565b73ffffffffffffffffffffffffffffffffffffffff1661189c611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e99061416a565b60405180910390fd5b80600f5f6101000a81548160ff02191690831515021790555050565b611916612621565b73ffffffffffffffffffffffffffffffffffffffff16611934611a9d565b73ffffffffffffffffffffffffffffffffffffffff161461198a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119819061416a565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6119ea612621565b73ffffffffffffffffffffffffffffffffffffffff16611a08611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a559061416a565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555042601281905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611acd612621565b73ffffffffffffffffffffffffffffffffffffffff16611aeb611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b389061416a565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b606060048054611b6d90614237565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9990614237565b8015611be45780601f10611bbb57610100808354040283529160200191611be4565b820191905f5260205f20905b815481529060010190602001808311611bc757829003601f168201915b5050505050905090565b611bf6612621565b73ffffffffffffffffffffffffffffffffffffffff16611c14611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c619061416a565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf09061457a565b60405180910390fd5b611d03828261360f565b5050565b611d0f612621565b73ffffffffffffffffffffffffffffffffffffffff16611d2d611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a9061416a565b60405180910390fd5b80600d8190555050565b61271081565b5f8060015f611da0612621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190614608565b60405180910390fd5b611e6e611e65612621565b85858403612628565b600191505092915050565b5f611e8c611e85612621565b84846127eb565b6001905092915050565b6017602052805f5260405f205f915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611ece612621565b73ffffffffffffffffffffffffffffffffffffffff16611eec611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f399061416a565b60405180910390fd5b5f5b81518160ff161015611fd4575f60185f848460ff1681518110611f6a57611f69614188565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611fcc906141e2565b915050611f44565b5050565b611fe0612621565b73ffffffffffffffffffffffffffffffffffffffff16611ffe611a9d565b73ffffffffffffffffffffffffffffffffffffffff1614612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b9061416a565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b600d5481565b60105481565b61214e612621565b73ffffffffffffffffffffffffffffffffffffffff1661216c611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b99061416a565b60405180910390fd5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061223281600161190e565b6122663060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612261306117aa565b612628565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122d3919061463a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235c919061463a565b6040518363ffffffff1660e01b8152600401612379929190614665565b6020604051808303815f875af1158015612395573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b9919061463a565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061242460145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161190e565b61245060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161360f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430612498306117aa565b5f806124a2611a9d565b426040518863ffffffff1660e01b81526004016124c4969594939291906146c5565b60606040518083038185885af11580156124e0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906125059190614738565b5050506001600f5f6101000a81548160ff02191690831515021790555050565b61252d612621565b73ffffffffffffffffffffffffffffffffffffffff1661254b611a9d565b73ffffffffffffffffffffffffffffffffffffffff16146125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125989061416a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361260f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612606906147f8565b60405180910390fd5b6126188161354c565b50565b600e5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d90614886565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614914565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127de9190613f4c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612850906149a2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be90614a30565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612965575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90614a98565b60405180910390fd5b5f81036129bb576129b683835f613667565b613311565b600f5f9054906101000a900460ff1615612e9f576129d7611a9d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a455750612a15611a9d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a7d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ad05750600660149054906101000a900460ff16155b15612e9e57600f60019054906101000a900460ff16612bc45760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b84575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614b00565b60405180910390fd5b5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c61575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d0857600c54811115612cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca290614b8e565b60405180910390fd5b600e54612cb7836117aa565b82612cc2919061435d565b1115612d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfa90614bf6565b60405180910390fd5b612e9d565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612da5575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612df457600c54811115612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de690614c84565b60405180910390fd5b612e9c565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e9b57600e54612e4e836117aa565b82612e59919061435d565b1115612e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9190614bf6565b60405180910390fd5b5b5b5b5b5b5f612ea9306117aa565b90505f600d548210159050808015612ecd5750600f60029054906101000a900460ff165b8015612ee65750600660149054906101000a900460ff16155b8015612f39575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f8c575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fdf575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613022576001600660146101000a81548160ff0219169083151502179055506130076138dc565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806130d1575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156130da575f90505b5f8115613301575f601254426130f091906144d7565b905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156131e95761012c81116131b8576131a661271061319861012c61318a61316c868c613b1990919063ffffffff16565b60115461271061317c91906144d7565b613b1990919063ffffffff16565b613b2e90919063ffffffff16565b613b2e90919063ffffffff16565b866131b191906144d7565b91506131e4565b6131e16127106131d360115489613b1990919063ffffffff16565b613b2e90919063ffffffff16565b91505b6132dd565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156132dc5761012c81116132af5761329d61271061328f61012c613281613263868c613b1990919063ffffffff16565b60105461271061327391906144d7565b613b1990919063ffffffff16565b613b2e90919063ffffffff16565b613b2e90919063ffffffff16565b866132a891906144d7565b91506132db565b6132d86127106132ca60105489613b1990919063ffffffff16565b613b2e90919063ffffffff16565b91505b5b5b5f8211156132f1576132f0883084613667565b5b81866132fd91906144d7565b9550505b61330c878787613667565b505050505b505050565b5f600267ffffffffffffffff81111561333257613331613b72565b5b6040519080825280602002602001820160405280156133605781602001602082028036833780820191505090505b50905030815f8151811061337757613376614188565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561341b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061343f919061463a565b8160018151811061345357613452614188565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134b93060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612628565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161351b959493929190614d59565b5f604051808303815f87803b158015613532575f80fd5b505af1158015613544573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136cc906149a2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373a90614a30565b60405180910390fd5b61374e838383613b43565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156137d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c890614e21565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461385f919061435d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138c39190613f4c565b60405180910390a36138d6848484613b48565b50505050565b5f6138e6306117aa565b90505f81036138f55750613b17565b600d548110613b15575f600d54905061390d81613316565b5f4790505f811115613ad6575f60646046836139299190614390565b61393391906143fe565b90505f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161397b9061445b565b5f6040518083038185875af1925050503d805f81146139b5576040519150601f19603f3d011682016040523d82523d5f602084013e6139ba565b606091505b50509050806139fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f5906144b9565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168284613a4291906144d7565b604051613a4e9061445b565b5f6040518083038185875af1925050503d805f8114613a88576040519150601f19603f3d011682016040523d82523d5f602084013e613a8d565b606091505b50508091505080613ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aca906144b9565b60405180910390fd5b50505b7fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff82826001604051613b0a93929190614e3f565b60405180910390a150505b505b565b5f8183613b269190614390565b905092915050565b5f8183613b3b91906143fe565b905092915050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ba882613b62565b810181811067ffffffffffffffff82111715613bc757613bc6613b72565b5b80604052505050565b5f613bd9613b4d565b9050613be58282613b9f565b919050565b5f67ffffffffffffffff821115613c0457613c03613b72565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c4282613c19565b9050919050565b613c5281613c38565b8114613c5c575f80fd5b50565b5f81359050613c6d81613c49565b92915050565b5f613c85613c8084613bea565b613bd0565b90508083825260208201905060208402830185811115613ca857613ca7613c15565b5b835b81811015613cd15780613cbd8882613c5f565b845260208401935050602081019050613caa565b5050509392505050565b5f82601f830112613cef57613cee613b5e565b5b8135613cff848260208601613c73565b91505092915050565b5f60208284031215613d1d57613d1c613b56565b5b5f82013567ffffffffffffffff811115613d3a57613d39613b5a565b5b613d4684828501613cdb565b91505092915050565b5f819050919050565b613d6181613d4f565b8114613d6b575f80fd5b50565b5f81359050613d7c81613d58565b92915050565b5f60208284031215613d9757613d96613b56565b5b5f613da484828501613d6e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f613ddf82613dad565b613de98185613db7565b9350613df9818560208601613dc7565b613e0281613b62565b840191505092915050565b5f6020820190508181035f830152613e258184613dd5565b905092915050565b5f8060408385031215613e4357613e42613b56565b5b5f613e5085828601613c5f565b9250506020613e6185828601613d6e565b9150509250929050565b5f8115159050919050565b613e7f81613e6b565b82525050565b5f602082019050613e985f830184613e76565b92915050565b5f60208284031215613eb357613eb2613b56565b5b5f613ec084828501613c5f565b91505092915050565b5f819050919050565b5f613eec613ee7613ee284613c19565b613ec9565b613c19565b9050919050565b5f613efd82613ed2565b9050919050565b5f613f0e82613ef3565b9050919050565b613f1e81613f04565b82525050565b5f602082019050613f375f830184613f15565b92915050565b613f4681613d4f565b82525050565b5f602082019050613f5f5f830184613f3d565b92915050565b5f805f60608486031215613f7c57613f7b613b56565b5b5f613f8986828701613c5f565b9350506020613f9a86828701613c5f565b9250506040613fab86828701613d6e565b9150509250925092565b613fbe81613c38565b82525050565b5f602082019050613fd75f830184613fb5565b92915050565b5f60ff82169050919050565b613ff281613fdd565b82525050565b5f60208201905061400b5f830184613fe9565b92915050565b5f806040838503121561402757614026613b56565b5b5f61403485828601613d6e565b925050602061404585828601613d6e565b9150509250929050565b61405881613e6b565b8114614062575f80fd5b50565b5f813590506140738161404f565b92915050565b5f6020828403121561408e5761408d613b56565b5b5f61409b84828501614065565b91505092915050565b5f80604083850312156140ba576140b9613b56565b5b5f6140c785828601613c5f565b92505060206140d885828601614065565b9150509250929050565b5f80604083850312156140f8576140f7613b56565b5b5f61410585828601613c5f565b925050602061411685828601613c5f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614154602083613db7565b915061415f82614120565b602082019050919050565b5f6020820190508181035f83015261418181614148565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6141ec82613fdd565b915060ff82036141ff576141fe6141b5565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061424e57607f821691505b6020821081036142615761426061420a565b5b50919050565b7f4d75737420626520612076616c69642072616e676500000000000000000000005f82015250565b5f61429b601583613db7565b91506142a682614267565b602082019050919050565b5f6020820190508181035f8301526142c88161428f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614329602883613db7565b9150614334826142cf565b604082019050919050565b5f6020820190508181035f8301526143568161431d565b9050919050565b5f61436782613d4f565b915061437283613d4f565b925082820190508082111561438a576143896141b5565b5b92915050565b5f61439a82613d4f565b91506143a583613d4f565b92508282026143b381613d4f565b915082820484148315176143ca576143c96141b5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61440882613d4f565b915061441383613d4f565b925082614423576144226143d1565b5b828204905092915050565b5f81905092915050565b50565b5f6144465f8361442e565b915061445182614438565b5f82019050919050565b5f6144658261443b565b9150819050919050565b7f756e61626c6520746f20747266000000000000000000000000000000000000005f82015250565b5f6144a3600d83613db7565b91506144ae8261446f565b602082019050919050565b5f6020820190508181035f8301526144d081614497565b9050919050565b5f6144e182613d4f565b91506144ec83613d4f565b9250828203905081811115614504576145036141b5565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614564603983613db7565b915061456f8261450a565b604082019050919050565b5f6020820190508181035f83015261459181614558565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145f2602583613db7565b91506145fd82614598565b604082019050919050565b5f6020820190508181035f83015261461f816145e6565b9050919050565b5f8151905061463481613c49565b92915050565b5f6020828403121561464f5761464e613b56565b5b5f61465c84828501614626565b91505092915050565b5f6040820190506146785f830185613fb5565b6146856020830184613fb5565b9392505050565b5f819050919050565b5f6146af6146aa6146a58461468c565b613ec9565b613d4f565b9050919050565b6146bf81614695565b82525050565b5f60c0820190506146d85f830189613fb5565b6146e56020830188613f3d565b6146f260408301876146b6565b6146ff60608301866146b6565b61470c6080830185613fb5565b61471960a0830184613f3d565b979650505050505050565b5f8151905061473281613d58565b92915050565b5f805f6060848603121561474f5761474e613b56565b5b5f61475c86828701614724565b935050602061476d86828701614724565b925050604061477e86828701614724565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6147e2602683613db7565b91506147ed82614788565b604082019050919050565b5f6020820190508181035f83015261480f816147d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614870602483613db7565b915061487b82614816565b604082019050919050565b5f6020820190508181035f83015261489d81614864565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148fe602283613db7565b9150614909826148a4565b604082019050919050565b5f6020820190508181035f83015261492b816148f2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61498c602583613db7565b915061499782614932565b604082019050919050565b5f6020820190508181035f8301526149b981614980565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a1a602383613db7565b9150614a25826149c0565b604082019050919050565b5f6020820190508181035f830152614a4781614a0e565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f614a82600b83613db7565b9150614a8d82614a4e565b602082019050919050565b5f6020820190508181035f830152614aaf81614a76565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965742e00000000005f82015250565b5f614aea601b83613db7565b9150614af582614ab6565b602082019050919050565b5f6020820190508181035f830152614b1781614ade565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614b78603583613db7565b9150614b8382614b1e565b604082019050919050565b5f6020820190508181035f830152614ba581614b6c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614be0601383613db7565b9150614beb82614bac565b602082019050919050565b5f6020820190508181035f830152614c0d81614bd4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614c6e603683613db7565b9150614c7982614c14565b604082019050919050565b5f6020820190508181035f830152614c9b81614c62565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614cd481613c38565b82525050565b5f614ce58383614ccb565b60208301905092915050565b5f602082019050919050565b5f614d0782614ca2565b614d118185614cac565b9350614d1c83614cbc565b805f5b83811015614d4c578151614d338882614cda565b9750614d3e83614cf1565b925050600181019050614d1f565b5085935050505092915050565b5f60a082019050614d6c5f830188613f3d565b614d7960208301876146b6565b8181036040830152614d8b8186614cfd565b9050614d9a6060830185613fb5565b614da76080830184613f3d565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e0b602683613db7565b9150614e1682614db1565b604082019050919050565b5f6020820190508181035f830152614e3881614dff565b9050919050565b5f606082019050614e525f830186613f3d565b614e5f6020830185613f3d565b614e6c6040830184613e76565b94935050505056fea2646970667358221220aeb9729b1a6c134b976c6ab00fe79711d0d750e4c133da9217997e0b4979c3b764736f6c63430008190033

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

0000000000000000000000002a891c111f9f8164d0a14e417b711657c8f8c3aa0000000000000000000000000ba7933323eee67d6850cdd94ad269e5c3faeb130000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _teamWallet (address): 0x2a891C111F9f8164D0a14e417b711657c8F8c3aA
Arg [1] : _jackpotWallet (address): 0x0ba7933323EEE67D6850Cdd94aD269e5c3faeb13
Arg [2] : _uniswapV2RouterAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000002a891c111f9f8164d0a14e417b711657c8f8c3aa
Arg [1] : 0000000000000000000000000ba7933323eee67d6850cdd94ad269e5c3faeb13
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

18284:16267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33513:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26696:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4691:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6293:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20936:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20679:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5180:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26931:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27309:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6495:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26569:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20762:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18541:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5022:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7032:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27133:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20727:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18608:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20322:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27489:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33884:662;;;;;;;;;;;;;:::i;:::-;;18477:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24135:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20605:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26455:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20403:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5351:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1439:103;;;;;;;;;;;;;:::i;:::-;;27032:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24328:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23904:156;;;;;;;;;;;;;:::i;:::-;;788:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24625:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4910:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24873:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26813:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20443:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7330:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5707:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21006:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20363:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33695:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24733:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19931:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5970:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20552:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20051:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20505:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25185:1124;;;:::i;:::-;;1697:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20226:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33513:176;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33593:7:::1;33589:93;33605:8;:15;33603:1;:17;;;33589:93;;;33666:4;33640:10;:23;33651:8;33660:1;33651:11;;;;;;;;;;:::i;:::-;;;;;;;;33640:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;33621:3;;;;;:::i;:::-;;;;33589:93;;;;33513:176:::0;:::o;26696:109::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26791:6:::1;26768:20;:29;;;;26696:109:::0;:::o;4691:100::-;4745:13;4778:5;4771:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4691:100;:::o;6293:194::-;6401:4;6418:39;6427:12;:10;:12::i;:::-;6441:7;6450:6;6418:8;:39::i;:::-;6475:4;6468:11;;6293:194;;;;:::o;20936:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;20679:41::-;;;;;;;;;;;;;:::o;5180:108::-;5241:7;5268:12;;5261:19;;5180:108;:::o;26931:93::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27010:6:::1;26998:9;:18;;;;26931:93:::0;:::o;27309:170::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27393:1:::1;27384:6;:10;:32;;;;;20478:5;27398:6;:18;;27384:32;27374:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;27465:6;27454:8;:17;;;;27309:170:::0;:::o;6495:529::-;6635:4;6652:36;6662:6;6670:9;6681:6;6652:9;:36::i;:::-;6701:24;6728:11;:19;6740:6;6728:19;;;;;;;;;;;;;;;:33;6748:12;:10;:12::i;:::-;6728:33;;;;;;;;;;;;;;;;6701:60;;6814:6;6794:16;:26;;6772:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6924:57;6933:6;6941:12;:10;:12::i;:::-;6974:6;6955:16;:25;6924:8;:57::i;:::-;7012:4;7005:11;;;6495:529;;;;;:::o;26569:119::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26666:14:::1;26650:13;;:30;;;;;;;;;;;;;;;;;;26569:119:::0;:::o;20762:53::-;20808:6;20762:53;:::o;18541:28::-;;;;;;;;;;;;;:::o;5022:93::-;5080:5;5105:2;5098:9;;5022:93;:::o;7032:290::-;7145:4;7162:130;7185:12;:10;:12::i;:::-;7212:7;7271:10;7234:11;:25;7246:12;:10;:12::i;:::-;7234:25;;;;;;;;;;;;;;;:34;7260:7;7234:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7162:8;:130::i;:::-;7310:4;7303:11;;7032:290;;;;:::o;27133:168::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27216:1:::1;27207:6;:10;:32;;;;;20478:5;27221:6;:18;;27207:32;27197:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;27287:6;27277:7;:16;;;;27133:168:::0;:::o;20727:28::-;;;;;;;;;;;;;:::o;18608:37::-;;;;;;;;;;;;;:::o;20322:34::-;;;;;;;;;;;;;:::o;27489:126::-;27555:4;27579:19;:28;27599:7;27579:28;;;;;;;;;;;;;;;;;;;;;;;;;27572:35;;27489:126;;;:::o;33884:662::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33938:20:::1;33961:24;33979:4;33961:9;:24::i;:::-;33938:47;;34014:1;33999:12;:16;33996:78;;;34032:30;34049:12;34032:16;:30::i;:::-;33996:78;34084:18;34105:21;34084:42;;34153:1;34140:10;:14;34137:402;;;34171:18;34210:3;34205:2;34192:10;:15;;;;:::i;:::-;:21;;;;:::i;:::-;34171:42;;34274:12;34300:13;;;;;;;;;;;34292:27;;34327:10;34292:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34273:69;;;34365:7;34357:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;34427:10;;;;;;;;;;;34419:24;;34464:10;34451;:23;;;;:::i;:::-;34419:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34405:74;;;;;34502:7;34494:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;34156:383;;34137:402;33925:621;;33884:662::o:0;18477:25::-;;;;;;;;;;;;;:::o;24135:185::-;24206:4;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24240:5:::1;24223:14;;:22;;;;;;;;;;;;;;;;;;24267:1;24256:8;:12;;;;24289:1;24279:7;:11;;;;24308:4;24301:11;;24135:185:::0;;;;:::o;20605:30::-;;;;:::o;26455:106::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26542:11:::1;26529:10;;:24;;;;;;;;;;;;;;;;;;26455:106:::0;:::o;20403:31::-;;;;;;;;;;;;;:::o;5351:143::-;5441:7;5468:9;:18;5478:7;5468:18;;;;;;;;;;;;;;;;5461:25;;5351:143;;;:::o;1439:103::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1504:30:::1;1531:1;1504:18;:30::i;:::-;1439:103::o:0;27032:93::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27112:5:::1;27095:14;;:22;;;;;;;;;;;;;;;;;;27032:93:::0;:::o;24328:201::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24511:10:::1;24459:31;:49;24491:16;24459:49;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;24328:201:::0;;:::o;23904:156::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23975:4:::1;23959:13;;:20;;;;;;;;;;;;;;;;;;24004:4;23990:11;;:18;;;;;;;;;;;;;;;;;;24037:15;24019;:33;;;;23904:156::o:0;788:87::-;834:7;861:6;;;;;;;;;;;854:13;;788:87;:::o;24625:100::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24710:7:::1;24696:11;;:21;;;;;;;;;;;;;;;;;;24625:100:::0;:::o;4910:104::-;4966:13;4999:7;4992:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4910:104;:::o;24873:304::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25019:13:::1;;;;;;;;;;;25011:21;;:4;:21;;::::0;24989:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25128:41;25157:4;25163:5;25128:28;:41::i;:::-;24873:304:::0;;:::o;26813:110::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26909:6:::1;26888:18;:27;;;;26813:110:::0;:::o;20443:40::-;20478:5;20443:40;:::o;7330:475::-;7448:4;7465:24;7492:11;:25;7504:12;:10;:12::i;:::-;7492:25;;;;;;;;;;;;;;;:34;7518:7;7492:34;;;;;;;;;;;;;;;;7465:61;;7579:15;7559:16;:35;;7537:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7695:67;7704:12;:10;:12::i;:::-;7718:7;7746:15;7727:16;:34;7695:8;:67::i;:::-;7793:4;7786:11;;;7330:475;;;;:::o;5707:200::-;5818:4;5835:42;5845:12;:10;:12::i;:::-;5859:9;5870:6;5835:9;:42::i;:::-;5895:4;5888:11;;5707:200;;;;:::o;21006:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20363:33::-;;;;;;;;;;;;;:::o;33695:179::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33777:7:::1;33773:94;33789:8;:15;33787:1;:17;;;33773:94;;;33850:5;33824:10;:23;33835:8;33844:1;33835:11;;;;;;;;;;:::i;:::-;;;;;;;;33824:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;33805:3;;;;;:::i;:::-;;;;33773:94;;;;33695:179:::0;:::o;24733:132::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24849:8:::1;24818:19;:28;24838:7;24818:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24733:132:::0;;:::o;19931:64::-;;;;:::o;5970:176::-;6084:7;6111:11;:18;6123:5;6111:18;;;;;;;;;;;;;;;:27;6130:7;6111:27;;;;;;;;;;;;;;;;6104:34;;5970:176;;;;:::o;20552:30::-;;;;:::o;20051:63::-;;;;:::o;20505:26::-;;;;:::o;25185:1124::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25314:35:::1;25385:22;;;;;;;;;;;25314:104;;25449:16;25431:15;;:34;;;;;;;;;;;;;;;;;;25476:58;25510:16;25529:4;25476:25;:58::i;:::-;25545:75;25562:4;25577:15;;;;;;;;;;;25595:24;25613:4;25595:9;:24::i;:::-;25545:8;:75::i;:::-;25695:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25677:70;;;25756:4;25763:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25677:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25661:13;;:126;;;;;;;;;;;;;;;;;;25798:55;25832:13;;;;;;;;;;;25848:4;25798:25;:55::i;:::-;25864:58;25901:13;;;;;;;;;;;25917:4;25864:28;:58::i;:::-;25935:15;;;;;;;;;;;:31;;;25974:9;26007:4;26043:24;26061:4;26043:9;:24::i;:::-;26102:1;26145::::0;26188:7:::1;:5;:7::i;:::-;26245:15;25935:336;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26297:4;26282:14;;:19;;;;;;;;;;;;;;;;;;25236:1073;25185:1124::o:0;1697:238::-;1019:12;:10;:12::i;:::-;1008:23;;:7;:5;:7::i;:::-;:23;;;1000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;::::0;1778:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1899:28;1918:8;1899:18;:28::i;:::-;1697:238:::0;:::o;20226:53::-;;;;:::o;109:98::-;162:7;189:10;182:17;;109:98;:::o;9597:380::-;9750:1;9733:19;;:5;:19;;;9725:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9831:1;9812:21;;:7;:21;;;9804:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9915:6;9885:11;:18;9897:5;9885:18;;;;;;;;;;;;;;;:27;9904:7;9885:27;;;;;;;;;;;;;;;:36;;;;9953:7;9937:32;;9946:5;9937:32;;;9962:6;9937:32;;;;;;:::i;:::-;;;;;;;;9597:380;;;:::o;27623:4313::-;27771:1;27755:18;;:4;:18;;;27747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27848:1;27834:16;;:2;:16;;;27826:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27910:10;:14;27921:2;27910:14;;;;;;;;;;;;;;;;;;;;;;;;;27909:15;:36;;;;;27929:10;:16;27940:4;27929:16;;;;;;;;;;;;;;;;;;;;;;;;;27928:17;27909:36;27901:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;27988:1;27978:6;:11;27974:93;;28006:28;28022:4;28028:2;28032:1;28006:15;:28::i;:::-;28049:7;;27974:93;28083:14;;;;;;;;;;;28079:1707;;;28144:7;:5;:7::i;:::-;28136:15;;:4;:15;;;;:49;;;;;28178:7;:5;:7::i;:::-;28172:13;;:2;:13;;;;28136:49;:86;;;;;28220:1;28206:16;;:2;:16;;;;28136:86;:128;;;;;28257:6;28243:21;;:2;:21;;;;28136:128;:158;;;;;28286:8;;;;;;;;;;;28285:9;28136:158;28114:1661;;;28334:13;;;;;;;;;;;28329:228;;28406:19;:25;28426:4;28406:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28435:19;:23;28455:2;28435:23;;;;;;;;;;;;;;;;;;;;;;;;;28406:52;28372:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;28329:228;28631:25;:31;28657:4;28631:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;28688:31;:35;28720:2;28688:35;;;;;;;;;;;;;;;;;;;;;;;;;28687:36;28631:92;28605:1155;;;28810:20;;28800:6;:30;;28766:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;29018:9;;29001:13;29011:2;29001:9;:13::i;:::-;28992:6;:22;;;;:::i;:::-;:35;;28958:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28605:1155;;;29200:25;:29;29226:2;29200:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;29255:31;:37;29287:4;29255:37;;;;;;;;;;;;;;;;;;;;;;;;;29254:38;29200:92;29174:586;;;29379:20;;29369:6;:30;;29335:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;29174:586;;;29538:31;:35;29570:2;29538:35;;;;;;;;;;;;;;;;;;;;;;;;;29533:227;;29658:9;;29641:13;29651:2;29641:9;:13::i;:::-;29632:6;:22;;;;:::i;:::-;:35;;29598:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29533:227;29174:586;28605:1155;28114:1661;28079:1707;29796:28;29827:24;29845:4;29827:9;:24::i;:::-;29796:55;;29864:12;29903:18;;29879:20;:42;;29864:57;;29940:7;:31;;;;;29960:11;;;;;;;;;;;29940:31;:75;;;;;30007:8;;;;;;;;;;;30006:9;29940:75;:143;;;;;30052:25;:31;30078:4;30052:31;;;;;;;;;;;;;;;;;;;;;;;;;30051:32;29940:143;:205;;;;;30120:19;:25;30140:4;30120:25;;;;;;;;;;;;;;;;;;;;;;;;;30119:26;29940:205;:265;;;;;30182:19;:23;30202:2;30182:23;;;;;;;;;;;;;;;;;;;;;;;;;30181:24;29940:265;29936:398;;;30262:4;30251:8;;:15;;;;;;;;;;;;;;;;;;30281:10;:8;:10::i;:::-;30317:5;30306:8;;:16;;;;;;;;;;;;;;;;;;29936:398;30346:12;30362:8;;;;;;;;;;;30361:9;30346:24;;30472:19;:25;30492:4;30472:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30501:19;:23;30521:2;30501:23;;;;;;;;;;;;;;;;;;;;;;;;;30472:52;30468:100;;;30551:5;30541:15;;30468:100;30580:12;30685:7;30681:1204;;;30733:26;30780:15;;30762;:33;;;;:::i;:::-;30733:62;;30814:25;:29;30840:2;30814:29;;;;;;;;;;;;;;;;;;;;;;;;;30810:928;;;30988:9;30966:18;:31;30963:273;;31039:86;20478:5;31039:72;31101:9;31039:57;31065:30;31076:18;31065:6;:10;;:30;;;;:::i;:::-;31051:8;;20478:5;31040:19;;;;:::i;:::-;31039:25;;:57;;;;:::i;:::-;:61;;:72;;;;:::i;:::-;:76;;:86;;;;:::i;:::-;31029:6;:97;;;;:::i;:::-;31022:104;;30963:273;;;31182:34;20478:5;31182:20;31193:8;;31182:6;:10;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;31175:41;;30963:273;30810:928;;;31303:25;:31;31329:4;31303:31;;;;;;;;;;;;;;;;;;;;;;;;;31299:439;;;31477:9;31455:18;:31;31452:271;;31528:85;20478:5;31528:71;31589:9;31528:56;31553:30;31564:18;31553:6;:10;;:30;;;;:::i;:::-;31540:7;;20478:5;31529:18;;;;:::i;:::-;31528:24;;:56;;;;:::i;:::-;:60;;:71;;;;:::i;:::-;:75;;:85;;;;:::i;:::-;31518:6;:96;;;;:::i;:::-;31511:103;;31452:271;;;31670:33;20478:5;31670:19;31681:7;;31670:6;:10;;:19;;;;:::i;:::-;:23;;:33;;;;:::i;:::-;31663:40;;31452:271;31299:439;30810:928;31765:1;31758:4;:8;31754:91;;;31787:42;31803:4;31817;31824;31787:15;:42::i;:::-;31754:91;31869:4;31859:14;;;;;:::i;:::-;;;30694:1191;30681:1204;31895:33;31911:4;31917:2;31921:6;31895:15;:33::i;:::-;27736:4200;;;;27623:4313;;;;:::o;31944:603::-;32070:21;32108:1;32094:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32070:40;;32139:4;32121;32126:1;32121:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32165:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32155:4;32160:1;32155:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32198:62;32215:4;32230:15;;;;;;;;;;;32248:11;32198:8;:62::i;:::-;32297:15;;;;;;;;;;;:66;;;32378:11;32404:1;32448:4;32475;32495:15;32297:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31999:548;31944:603;:::o;2095:191::-;2169:16;2188:6;;;;;;;;;;;2169:25;;2214:8;2205:6;;:17;;;;;;;;;;;;;;;;;;2269:8;2238:40;;2259:8;2238:40;;;;;;;;;;;;2158:128;2095:191;:::o;26317:130::-;26434:5;26400:25;:31;26426:4;26400:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26317:130;;:::o;7813:770::-;7971:1;7953:20;;:6;:20;;;7945:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8055:1;8034:23;;:9;:23;;;8026:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8110:47;8131:6;8139:9;8150:6;8110:20;:47::i;:::-;8170:21;8194:9;:17;8204:6;8194:17;;;;;;;;;;;;;;;;8170:41;;8261:6;8244:13;:23;;8222:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8405:6;8389:13;:22;8369:9;:17;8379:6;8369:17;;;;;;;;;;;;;;;:42;;;;8457:6;8433:9;:20;8443:9;8433:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8498:9;8481:35;;8490:6;8481:35;;;8509:6;8481:35;;;;;;:::i;:::-;;;;;;;;8529:46;8549:6;8557:9;8568:6;8529:19;:46::i;:::-;7934:649;7813:770;;;:::o;32555:950::-;32594:23;32620:24;32638:4;32620:9;:24::i;:::-;32594:50;;32680:1;32661:15;:20;32657:59;;32698:7;;;32657:59;32749:18;;32730:15;:37;32726:766;;32784:26;32813:18;;32784:47;;32846:36;32863:18;32846:16;:36::i;:::-;32897:23;32923:21;32897:47;;32982:1;32966:15;:17;32963:438;;;33003:18;33047:3;33042:2;33024:15;:20;;;;:::i;:::-;:26;;;;:::i;:::-;33003:47;;33115:12;33141:13;;;;;;;;;;;33133:27;;33168:10;33133:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33114:69;;;33210:7;33202:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;33276:10;;;;;;;;;;;33268:24;;33318:10;33300:15;:28;;;;:::i;:::-;33268:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33254:79;;;;;33360:7;33352:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;32984:417;;32963:438;33422:58;33438:18;33458:15;33475:4;33422:58;;;;;;;;:::i;:::-;;;;;;;;32769:723;;32726:766;32583:922;32555:950;:::o;11947:98::-;12005:7;12036:1;12032;:5;;;;:::i;:::-;12025:12;;11947:98;;;;:::o;12053:::-;12111:7;12142:1;12138;:5;;;;:::i;:::-;12131:12;;12053:98;;;;:::o;9985:125::-;;;;:::o;10118:124::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:329::-;4206:6;4255:2;4243:9;4234:7;4230:23;4226:32;4223:119;;;4261:79;;:::i;:::-;4223:119;4381:1;4406:53;4451:7;4442:6;4431:9;4427:22;4406:53;:::i;:::-;4396:63;;4352:117;4147:329;;;;:::o;4482:99::-;4534:6;4568:5;4562:12;4552:22;;4482:99;;;:::o;4587:169::-;4671:11;4705:6;4700:3;4693:19;4745:4;4740:3;4736:14;4721:29;;4587:169;;;;:::o;4762:139::-;4851:6;4846:3;4841;4835:23;4892:1;4883:6;4878:3;4874:16;4867:27;4762:139;;;:::o;4907:377::-;4995:3;5023:39;5056:5;5023:39;:::i;:::-;5078:71;5142:6;5137:3;5078:71;:::i;:::-;5071:78;;5158:65;5216:6;5211:3;5204:4;5197:5;5193:16;5158:65;:::i;:::-;5248:29;5270:6;5248:29;:::i;:::-;5243:3;5239:39;5232:46;;4999:285;4907:377;;;;:::o;5290:313::-;5403:4;5441:2;5430:9;5426:18;5418:26;;5490:9;5484:4;5480:20;5476:1;5465:9;5461:17;5454:47;5518:78;5591:4;5582:6;5518:78;:::i;:::-;5510:86;;5290:313;;;;:::o;5609:474::-;5677:6;5685;5734:2;5722:9;5713:7;5709:23;5705:32;5702:119;;;5740:79;;:::i;:::-;5702:119;5860:1;5885:53;5930:7;5921:6;5910:9;5906:22;5885:53;:::i;:::-;5875:63;;5831:117;5987:2;6013:53;6058:7;6049:6;6038:9;6034:22;6013:53;:::i;:::-;6003:63;;5958:118;5609:474;;;;;:::o;6089:90::-;6123:7;6166:5;6159:13;6152:21;6141:32;;6089:90;;;:::o;6185:109::-;6266:21;6281:5;6266:21;:::i;:::-;6261:3;6254:34;6185:109;;:::o;6300:210::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:65;6500:1;6489:9;6485:17;6476:6;6438:65;:::i;:::-;6300:210;;;;:::o;6516:329::-;6575:6;6624:2;6612:9;6603:7;6599:23;6595:32;6592:119;;;6630:79;;:::i;:::-;6592:119;6750:1;6775:53;6820:7;6811:6;6800:9;6796:22;6775:53;:::i;:::-;6765:63;;6721:117;6516:329;;;;:::o;6851:60::-;6879:3;6900:5;6893:12;;6851:60;;;:::o;6917:142::-;6967:9;7000:53;7018:34;7027:24;7045:5;7027:24;:::i;:::-;7018:34;:::i;:::-;7000:53;:::i;:::-;6987:66;;6917:142;;;:::o;7065:126::-;7115:9;7148:37;7179:5;7148:37;:::i;:::-;7135:50;;7065:126;;;:::o;7197:153::-;7274:9;7307:37;7338:5;7307:37;:::i;:::-;7294:50;;7197:153;;;:::o;7356:185::-;7470:64;7528:5;7470:64;:::i;:::-;7465:3;7458:77;7356:185;;:::o;7547:276::-;7667:4;7705:2;7694:9;7690:18;7682:26;;7718:98;7813:1;7802:9;7798:17;7789:6;7718:98;:::i;:::-;7547:276;;;;:::o;7829:118::-;7916:24;7934:5;7916:24;:::i;:::-;7911:3;7904:37;7829:118;;:::o;7953:222::-;8046:4;8084:2;8073:9;8069:18;8061:26;;8097:71;8165:1;8154:9;8150:17;8141:6;8097:71;:::i;:::-;7953:222;;;;:::o;8181:619::-;8258:6;8266;8274;8323:2;8311:9;8302:7;8298:23;8294:32;8291:119;;;8329:79;;:::i;:::-;8291:119;8449:1;8474:53;8519:7;8510:6;8499:9;8495:22;8474:53;:::i;:::-;8464:63;;8420:117;8576:2;8602:53;8647:7;8638:6;8627:9;8623:22;8602:53;:::i;:::-;8592:63;;8547:118;8704:2;8730:53;8775:7;8766:6;8755:9;8751:22;8730:53;:::i;:::-;8720:63;;8675:118;8181:619;;;;;:::o;8806:118::-;8893:24;8911:5;8893:24;:::i;:::-;8888:3;8881:37;8806:118;;:::o;8930:222::-;9023:4;9061:2;9050:9;9046:18;9038:26;;9074:71;9142:1;9131:9;9127:17;9118:6;9074:71;:::i;:::-;8930:222;;;;:::o;9158:86::-;9193:7;9233:4;9226:5;9222:16;9211:27;;9158:86;;;:::o;9250:112::-;9333:22;9349:5;9333:22;:::i;:::-;9328:3;9321:35;9250:112;;:::o;9368:214::-;9457:4;9495:2;9484:9;9480:18;9472:26;;9508:67;9572:1;9561:9;9557:17;9548:6;9508:67;:::i;:::-;9368:214;;;;:::o;9588:474::-;9656:6;9664;9713:2;9701:9;9692:7;9688:23;9684:32;9681:119;;;9719:79;;:::i;:::-;9681:119;9839:1;9864:53;9909:7;9900:6;9889:9;9885:22;9864:53;:::i;:::-;9854:63;;9810:117;9966:2;9992:53;10037:7;10028:6;10017:9;10013:22;9992:53;:::i;:::-;9982:63;;9937:118;9588:474;;;;;:::o;10068:116::-;10138:21;10153:5;10138:21;:::i;:::-;10131:5;10128:32;10118:60;;10174:1;10171;10164:12;10118:60;10068:116;:::o;10190:133::-;10233:5;10271:6;10258:20;10249:29;;10287:30;10311:5;10287:30;:::i;:::-;10190:133;;;;:::o;10329:323::-;10385:6;10434:2;10422:9;10413:7;10409:23;10405:32;10402:119;;;10440:79;;:::i;:::-;10402:119;10560:1;10585:50;10627:7;10618:6;10607:9;10603:22;10585:50;:::i;:::-;10575:60;;10531:114;10329:323;;;;:::o;10658:468::-;10723:6;10731;10780:2;10768:9;10759:7;10755:23;10751:32;10748:119;;;10786:79;;:::i;:::-;10748:119;10906:1;10931:53;10976:7;10967:6;10956:9;10952:22;10931:53;:::i;:::-;10921:63;;10877:117;11033:2;11059:50;11101:7;11092:6;11081:9;11077:22;11059:50;:::i;:::-;11049:60;;11004:115;10658:468;;;;;:::o;11132:474::-;11200:6;11208;11257:2;11245:9;11236:7;11232:23;11228:32;11225:119;;;11263:79;;:::i;:::-;11225:119;11383:1;11408:53;11453:7;11444:6;11433:9;11429:22;11408:53;:::i;:::-;11398:63;;11354:117;11510:2;11536:53;11581:7;11572:6;11561:9;11557:22;11536:53;:::i;:::-;11526:63;;11481:118;11132:474;;;;;:::o;11612:182::-;11752:34;11748:1;11740:6;11736:14;11729:58;11612:182;:::o;11800:366::-;11942:3;11963:67;12027:2;12022:3;11963:67;:::i;:::-;11956:74;;12039:93;12128:3;12039:93;:::i;:::-;12157:2;12152:3;12148:12;12141:19;;11800:366;;;:::o;12172:419::-;12338:4;12376:2;12365:9;12361:18;12353:26;;12425:9;12419:4;12415:20;12411:1;12400:9;12396:17;12389:47;12453:131;12579:4;12453:131;:::i;:::-;12445:139;;12172:419;;;:::o;12597:180::-;12645:77;12642:1;12635:88;12742:4;12739:1;12732:15;12766:4;12763:1;12756:15;12783:180;12831:77;12828:1;12821:88;12928:4;12925:1;12918:15;12952:4;12949:1;12942:15;12969:167;13006:3;13029:22;13045:5;13029:22;:::i;:::-;13020:31;;13073:4;13066:5;13063:15;13060:41;;13081:18;;:::i;:::-;13060:41;13128:1;13121:5;13117:13;13110:20;;12969:167;;;:::o;13142:180::-;13190:77;13187:1;13180:88;13287:4;13284:1;13277:15;13311:4;13308:1;13301:15;13328:320;13372:6;13409:1;13403:4;13399:12;13389:22;;13456:1;13450:4;13446:12;13477:18;13467:81;;13533:4;13525:6;13521:17;13511:27;;13467:81;13595:2;13587:6;13584:14;13564:18;13561:38;13558:84;;13614:18;;:::i;:::-;13558:84;13379:269;13328:320;;;:::o;13654:171::-;13794:23;13790:1;13782:6;13778:14;13771:47;13654:171;:::o;13831:366::-;13973:3;13994:67;14058:2;14053:3;13994:67;:::i;:::-;13987:74;;14070:93;14159:3;14070:93;:::i;:::-;14188:2;14183:3;14179:12;14172:19;;13831:366;;;:::o;14203:419::-;14369:4;14407:2;14396:9;14392:18;14384:26;;14456:9;14450:4;14446:20;14442:1;14431:9;14427:17;14420:47;14484:131;14610:4;14484:131;:::i;:::-;14476:139;;14203:419;;;:::o;14628:227::-;14768:34;14764:1;14756:6;14752:14;14745:58;14837:10;14832:2;14824:6;14820:15;14813:35;14628:227;:::o;14861:366::-;15003:3;15024:67;15088:2;15083:3;15024:67;:::i;:::-;15017:74;;15100:93;15189:3;15100:93;:::i;:::-;15218:2;15213:3;15209:12;15202:19;;14861:366;;;:::o;15233:419::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15486:9;15480:4;15476:20;15472:1;15461:9;15457:17;15450:47;15514:131;15640:4;15514:131;:::i;:::-;15506:139;;15233:419;;;:::o;15658:191::-;15698:3;15717:20;15735:1;15717:20;:::i;:::-;15712:25;;15751:20;15769:1;15751:20;:::i;:::-;15746:25;;15794:1;15791;15787:9;15780:16;;15815:3;15812:1;15809:10;15806:36;;;15822:18;;:::i;:::-;15806:36;15658:191;;;;:::o;15855:410::-;15895:7;15918:20;15936:1;15918:20;:::i;:::-;15913:25;;15952:20;15970:1;15952:20;:::i;:::-;15947:25;;16007:1;16004;16000:9;16029:30;16047:11;16029:30;:::i;:::-;16018:41;;16208:1;16199:7;16195:15;16192:1;16189:22;16169:1;16162:9;16142:83;16119:139;;16238:18;;:::i;:::-;16119:139;15903:362;15855:410;;;;:::o;16271:180::-;16319:77;16316:1;16309:88;16416:4;16413:1;16406:15;16440:4;16437:1;16430:15;16457:185;16497:1;16514:20;16532:1;16514:20;:::i;:::-;16509:25;;16548:20;16566:1;16548:20;:::i;:::-;16543:25;;16587:1;16577:35;;16592:18;;:::i;:::-;16577:35;16634:1;16631;16627:9;16622:14;;16457:185;;;;:::o;16648:147::-;16749:11;16786:3;16771:18;;16648:147;;;;:::o;16801:114::-;;:::o;16921:398::-;17080:3;17101:83;17182:1;17177:3;17101:83;:::i;:::-;17094:90;;17193:93;17282:3;17193:93;:::i;:::-;17311:1;17306:3;17302:11;17295:18;;16921:398;;;:::o;17325:379::-;17509:3;17531:147;17674:3;17531:147;:::i;:::-;17524:154;;17695:3;17688:10;;17325:379;;;:::o;17710:163::-;17850:15;17846:1;17838:6;17834:14;17827:39;17710:163;:::o;17879:366::-;18021:3;18042:67;18106:2;18101:3;18042:67;:::i;:::-;18035:74;;18118:93;18207:3;18118:93;:::i;:::-;18236:2;18231:3;18227:12;18220:19;;17879:366;;;:::o;18251:419::-;18417:4;18455:2;18444:9;18440:18;18432:26;;18504:9;18498:4;18494:20;18490:1;18479:9;18475:17;18468:47;18532:131;18658:4;18532:131;:::i;:::-;18524:139;;18251:419;;;:::o;18676:194::-;18716:4;18736:20;18754:1;18736:20;:::i;:::-;18731:25;;18770:20;18788:1;18770:20;:::i;:::-;18765:25;;18814:1;18811;18807:9;18799:17;;18838:1;18832:4;18829:11;18826:37;;;18843:18;;:::i;:::-;18826:37;18676:194;;;;:::o;18876:244::-;19016:34;19012:1;19004:6;19000:14;18993:58;19085:27;19080:2;19072:6;19068:15;19061:52;18876:244;:::o;19126:366::-;19268:3;19289:67;19353:2;19348:3;19289:67;:::i;:::-;19282:74;;19365:93;19454:3;19365:93;:::i;:::-;19483:2;19478:3;19474:12;19467:19;;19126:366;;;:::o;19498:419::-;19664:4;19702:2;19691:9;19687:18;19679:26;;19751:9;19745:4;19741:20;19737:1;19726:9;19722:17;19715:47;19779:131;19905:4;19779:131;:::i;:::-;19771:139;;19498:419;;;:::o;19923:224::-;20063:34;20059:1;20051:6;20047:14;20040:58;20132:7;20127:2;20119:6;20115:15;20108:32;19923:224;:::o;20153:366::-;20295:3;20316:67;20380:2;20375:3;20316:67;:::i;:::-;20309:74;;20392:93;20481:3;20392:93;:::i;:::-;20510:2;20505:3;20501:12;20494:19;;20153:366;;;:::o;20525:419::-;20691:4;20729:2;20718:9;20714:18;20706:26;;20778:9;20772:4;20768:20;20764:1;20753:9;20749:17;20742:47;20806:131;20932:4;20806:131;:::i;:::-;20798:139;;20525:419;;;:::o;20950:143::-;21007:5;21038:6;21032:13;21023:22;;21054:33;21081:5;21054:33;:::i;:::-;20950:143;;;;:::o;21099:351::-;21169:6;21218:2;21206:9;21197:7;21193:23;21189:32;21186:119;;;21224:79;;:::i;:::-;21186:119;21344:1;21369:64;21425:7;21416:6;21405:9;21401:22;21369:64;:::i;:::-;21359:74;;21315:128;21099:351;;;;:::o;21456:332::-;21577:4;21615:2;21604:9;21600:18;21592:26;;21628:71;21696:1;21685:9;21681:17;21672:6;21628:71;:::i;:::-;21709:72;21777:2;21766:9;21762:18;21753:6;21709:72;:::i;:::-;21456:332;;;;;:::o;21794:85::-;21839:7;21868:5;21857:16;;21794:85;;;:::o;21885:158::-;21943:9;21976:61;21994:42;22003:32;22029:5;22003:32;:::i;:::-;21994:42;:::i;:::-;21976:61;:::i;:::-;21963:74;;21885:158;;;:::o;22049:147::-;22144:45;22183:5;22144:45;:::i;:::-;22139:3;22132:58;22049:147;;:::o;22202:807::-;22451:4;22489:3;22478:9;22474:19;22466:27;;22503:71;22571:1;22560:9;22556:17;22547:6;22503:71;:::i;:::-;22584:72;22652:2;22641:9;22637:18;22628:6;22584:72;:::i;:::-;22666:80;22742:2;22731:9;22727:18;22718:6;22666:80;:::i;:::-;22756;22832:2;22821:9;22817:18;22808:6;22756:80;:::i;:::-;22846:73;22914:3;22903:9;22899:19;22890:6;22846:73;:::i;:::-;22929;22997:3;22986:9;22982:19;22973:6;22929:73;:::i;:::-;22202:807;;;;;;;;;:::o;23015:143::-;23072:5;23103:6;23097:13;23088:22;;23119:33;23146:5;23119:33;:::i;:::-;23015:143;;;;:::o;23164:663::-;23252:6;23260;23268;23317:2;23305:9;23296:7;23292:23;23288:32;23285:119;;;23323:79;;:::i;:::-;23285:119;23443:1;23468:64;23524:7;23515:6;23504:9;23500:22;23468:64;:::i;:::-;23458:74;;23414:128;23581:2;23607:64;23663:7;23654:6;23643:9;23639:22;23607:64;:::i;:::-;23597:74;;23552:129;23720:2;23746:64;23802:7;23793:6;23782:9;23778:22;23746:64;:::i;:::-;23736:74;;23691:129;23164:663;;;;;:::o;23833:225::-;23973:34;23969:1;23961:6;23957:14;23950:58;24042:8;24037:2;24029:6;24025:15;24018:33;23833:225;:::o;24064:366::-;24206:3;24227:67;24291:2;24286:3;24227:67;:::i;:::-;24220:74;;24303:93;24392:3;24303:93;:::i;:::-;24421:2;24416:3;24412:12;24405:19;;24064:366;;;:::o;24436:419::-;24602:4;24640:2;24629:9;24625:18;24617:26;;24689:9;24683:4;24679:20;24675:1;24664:9;24660:17;24653:47;24717:131;24843:4;24717:131;:::i;:::-;24709:139;;24436:419;;;:::o;24861:223::-;25001:34;24997:1;24989:6;24985:14;24978:58;25070:6;25065:2;25057:6;25053:15;25046:31;24861:223;:::o;25090:366::-;25232:3;25253:67;25317:2;25312:3;25253:67;:::i;:::-;25246:74;;25329:93;25418:3;25329:93;:::i;:::-;25447:2;25442:3;25438:12;25431:19;;25090:366;;;:::o;25462:419::-;25628:4;25666:2;25655:9;25651:18;25643:26;;25715:9;25709:4;25705:20;25701:1;25690:9;25686:17;25679:47;25743:131;25869:4;25743:131;:::i;:::-;25735:139;;25462:419;;;:::o;25887:221::-;26027:34;26023:1;26015:6;26011:14;26004:58;26096:4;26091:2;26083:6;26079:15;26072:29;25887:221;:::o;26114:366::-;26256:3;26277:67;26341:2;26336:3;26277:67;:::i;:::-;26270:74;;26353:93;26442:3;26353:93;:::i;:::-;26471:2;26466:3;26462:12;26455:19;;26114:366;;;:::o;26486:419::-;26652:4;26690:2;26679:9;26675:18;26667:26;;26739:9;26733:4;26729:20;26725:1;26714:9;26710:17;26703:47;26767:131;26893:4;26767:131;:::i;:::-;26759:139;;26486:419;;;:::o;26911:224::-;27051:34;27047:1;27039:6;27035:14;27028:58;27120:7;27115:2;27107:6;27103:15;27096:32;26911:224;:::o;27141:366::-;27283:3;27304:67;27368:2;27363:3;27304:67;:::i;:::-;27297:74;;27380:93;27469:3;27380:93;:::i;:::-;27498:2;27493:3;27489:12;27482:19;;27141:366;;;:::o;27513:419::-;27679:4;27717:2;27706:9;27702:18;27694:26;;27766:9;27760:4;27756:20;27752:1;27741:9;27737:17;27730:47;27794:131;27920:4;27794:131;:::i;:::-;27786:139;;27513:419;;;:::o;27938:222::-;28078:34;28074:1;28066:6;28062:14;28055:58;28147:5;28142:2;28134:6;28130:15;28123:30;27938:222;:::o;28166:366::-;28308:3;28329:67;28393:2;28388:3;28329:67;:::i;:::-;28322:74;;28405:93;28494:3;28405:93;:::i;:::-;28523:2;28518:3;28514:12;28507:19;;28166:366;;;:::o;28538:419::-;28704:4;28742:2;28731:9;28727:18;28719:26;;28791:9;28785:4;28781:20;28777:1;28766:9;28762:17;28755:47;28819:131;28945:4;28819:131;:::i;:::-;28811:139;;28538:419;;;:::o;28963:161::-;29103:13;29099:1;29091:6;29087:14;29080:37;28963:161;:::o;29130:366::-;29272:3;29293:67;29357:2;29352:3;29293:67;:::i;:::-;29286:74;;29369:93;29458:3;29369:93;:::i;:::-;29487:2;29482:3;29478:12;29471:19;;29130:366;;;:::o;29502:419::-;29668:4;29706:2;29695:9;29691:18;29683:26;;29755:9;29749:4;29745:20;29741:1;29730:9;29726:17;29719:47;29783:131;29909:4;29783:131;:::i;:::-;29775:139;;29502:419;;;:::o;29927:177::-;30067:29;30063:1;30055:6;30051:14;30044:53;29927:177;:::o;30110:366::-;30252:3;30273:67;30337:2;30332:3;30273:67;:::i;:::-;30266:74;;30349:93;30438:3;30349:93;:::i;:::-;30467:2;30462:3;30458:12;30451:19;;30110:366;;;:::o;30482:419::-;30648:4;30686:2;30675:9;30671:18;30663:26;;30735:9;30729:4;30725:20;30721:1;30710:9;30706:17;30699:47;30763:131;30889:4;30763:131;:::i;:::-;30755:139;;30482:419;;;:::o;30907:240::-;31047:34;31043:1;31035:6;31031:14;31024:58;31116:23;31111:2;31103:6;31099:15;31092:48;30907:240;:::o;31153:366::-;31295:3;31316:67;31380:2;31375:3;31316:67;:::i;:::-;31309:74;;31392:93;31481:3;31392:93;:::i;:::-;31510:2;31505:3;31501:12;31494:19;;31153:366;;;:::o;31525:419::-;31691:4;31729:2;31718:9;31714:18;31706:26;;31778:9;31772:4;31768:20;31764:1;31753:9;31749:17;31742:47;31806:131;31932:4;31806:131;:::i;:::-;31798:139;;31525:419;;;:::o;31950:169::-;32090:21;32086:1;32078:6;32074:14;32067:45;31950:169;:::o;32125:366::-;32267:3;32288:67;32352:2;32347:3;32288:67;:::i;:::-;32281:74;;32364:93;32453:3;32364:93;:::i;:::-;32482:2;32477:3;32473:12;32466:19;;32125:366;;;:::o;32497:419::-;32663:4;32701:2;32690:9;32686:18;32678:26;;32750:9;32744:4;32740:20;32736:1;32725:9;32721:17;32714:47;32778:131;32904:4;32778:131;:::i;:::-;32770:139;;32497:419;;;:::o;32922:241::-;33062:34;33058:1;33050:6;33046:14;33039:58;33131:24;33126:2;33118:6;33114:15;33107:49;32922:241;:::o;33169:366::-;33311:3;33332:67;33396:2;33391:3;33332:67;:::i;:::-;33325:74;;33408:93;33497:3;33408:93;:::i;:::-;33526:2;33521:3;33517:12;33510:19;;33169:366;;;:::o;33541:419::-;33707:4;33745:2;33734:9;33730:18;33722:26;;33794:9;33788:4;33784:20;33780:1;33769:9;33765:17;33758:47;33822:131;33948:4;33822:131;:::i;:::-;33814:139;;33541:419;;;:::o;33966:114::-;34033:6;34067:5;34061:12;34051:22;;33966:114;;;:::o;34086:184::-;34185:11;34219:6;34214:3;34207:19;34259:4;34254:3;34250:14;34235:29;;34086:184;;;;:::o;34276:132::-;34343:4;34366:3;34358:11;;34396:4;34391:3;34387:14;34379:22;;34276:132;;;:::o;34414:108::-;34491:24;34509:5;34491:24;:::i;:::-;34486:3;34479:37;34414:108;;:::o;34528:179::-;34597:10;34618:46;34660:3;34652:6;34618:46;:::i;:::-;34696:4;34691:3;34687:14;34673:28;;34528:179;;;;:::o;34713:113::-;34783:4;34815;34810:3;34806:14;34798:22;;34713:113;;;:::o;34862:732::-;34981:3;35010:54;35058:5;35010:54;:::i;:::-;35080:86;35159:6;35154:3;35080:86;:::i;:::-;35073:93;;35190:56;35240:5;35190:56;:::i;:::-;35269:7;35300:1;35285:284;35310:6;35307:1;35304:13;35285:284;;;35386:6;35380:13;35413:63;35472:3;35457:13;35413:63;:::i;:::-;35406:70;;35499:60;35552:6;35499:60;:::i;:::-;35489:70;;35345:224;35332:1;35329;35325:9;35320:14;;35285:284;;;35289:14;35585:3;35578:10;;34986:608;;;34862:732;;;;:::o;35600:831::-;35863:4;35901:3;35890:9;35886:19;35878:27;;35915:71;35983:1;35972:9;35968:17;35959:6;35915:71;:::i;:::-;35996:80;36072:2;36061:9;36057:18;36048:6;35996:80;:::i;:::-;36123:9;36117:4;36113:20;36108:2;36097:9;36093:18;36086:48;36151:108;36254:4;36245:6;36151:108;:::i;:::-;36143:116;;36269:72;36337:2;36326:9;36322:18;36313:6;36269:72;:::i;:::-;36351:73;36419:3;36408:9;36404:19;36395:6;36351:73;:::i;:::-;35600:831;;;;;;;;:::o;36437:225::-;36577:34;36573:1;36565:6;36561:14;36554:58;36646:8;36641:2;36633:6;36629:15;36622:33;36437:225;:::o;36668:366::-;36810:3;36831:67;36895:2;36890:3;36831:67;:::i;:::-;36824:74;;36907:93;36996:3;36907:93;:::i;:::-;37025:2;37020:3;37016:12;37009:19;;36668:366;;;:::o;37040:419::-;37206:4;37244:2;37233:9;37229:18;37221:26;;37293:9;37287:4;37283:20;37279:1;37268:9;37264:17;37257:47;37321:131;37447:4;37321:131;:::i;:::-;37313:139;;37040:419;;;:::o;37465:430::-;37608:4;37646:2;37635:9;37631:18;37623:26;;37659:71;37727:1;37716:9;37712:17;37703:6;37659:71;:::i;:::-;37740:72;37808:2;37797:9;37793:18;37784:6;37740:72;:::i;:::-;37822:66;37884:2;37873:9;37869:18;37860:6;37822:66;:::i;:::-;37465:430;;;;;;:::o

Swarm Source

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