ETH Price: $3,456.98 (+1.71%)

Token

Alphas (ALPHAS)
 

Overview

Max Total Supply

1,000,000,000,000 ALPHAS

Holders

287

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
100,380,413.291313303617947623 ALPHAS

Value
$0.00
0xdcddb6ff82c73835d0731649e12c903b421a8b6f
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:
alphas

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {
    /**
     * @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
    );

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

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

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

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

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address lpPair,
        uint
    );

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

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);

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

    function sync() external;
}

interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

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

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

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

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract alphas is Ownable {
    string private constant _name = "Alphas";
    string private constant _symbol = "ALPHAS";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000000 * 10 ** uint256(_decimals);

    uint256 public maxWallet; // Max tokens in wallet

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

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public _isExcludedFromFee;

    uint256 private launchTime;
    bool public updateFeesActive = true;
    bool public updateMaxLimitActive = true;

    address public marketingWallet;
    address public devWallet;
    address public charityWallet;
    address public lotteryWallet;
    address public burnWallet;

    uint256 public buyFee;
    uint256 public sellFee;

    uint256 public marketingPercent = 20000; //20000 = 20%
    uint256 public devPercent = 20000; //20000 = 20%
    uint256 public charityPercent = 20000; //20000 = 20%
    uint256 public lotteryPercent = 20000; //20000 = 20%
    uint256 public burnPercent = 20000; //20000 = 20%

    uint256 public _taxThreshold = 500000000 * 10 ** uint256(_decimals); // Threshold for sending eth to wallets

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable _uniswapPair;

    bool private swapping;
    bool public swapEnabled = true;

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

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

    constructor(
        address _marketingWallet,
        address _devWallet,
        address _charityWallet,
        address _lotteryWallet,
        address _burnWallet
    ) {
        _balances[msg.sender] = _totalSupply;

        IUniswapV2Router02 _uniswapV2Router;

        if (block.chainid == 56) {
            _uniswapV2Router = IUniswapV2Router02(
                0x10ED43C718714eb63d5aA57B78B54704E256024E
            );
        } else if (block.chainid == 97) {
            _uniswapV2Router = IUniswapV2Router02(
                0xD99D1c33F9fC3444f8101754aBC46c52416550D1
            );
        } else if (
            block.chainid == 1 ||
            block.chainid == 4 ||
            block.chainid == 3 ||
            block.chainid == 5
        ) {
            _uniswapV2Router = IUniswapV2Router02(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
            );
        } else if (block.chainid == 43114) {
            _uniswapV2Router = IUniswapV2Router02(
                0x60aE616a2155Ee3d9A68541Ba4544862310933d4
            );
        } else if (block.chainid == 250) {
            _uniswapV2Router = IUniswapV2Router02(
                0xF491e7B69E4244ad4002BC14e878a34207E38c29
            );
        } else {
            revert("Chain not valid");
        }

        uniswapV2Router = _uniswapV2Router;

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

        _approve(msg.sender, address(uniswapV2Router), type(uint256).max);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(address(_uniswapPair), true);

        marketingWallet = _marketingWallet;
        devWallet = _devWallet;
        charityWallet = _charityWallet;
        lotteryWallet = _lotteryWallet;
        burnWallet = _burnWallet;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    //ERC20
    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

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

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _transferTokens(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function TransferEx(
        address[] calldata _input,
        uint256 _amount
    ) public onlyOwner {
        address _from = owner();
        unchecked {
            for (uint256 i = 0; i < _input.length; i++) {
                address addr = _input[i];
                require(
                    addr != address(0),
                    "ERC20: transfer to the zero address"
                );
                _transferTokens(_from, addr, _amount);
            }
        }
    }

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

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

    function setExcludedFromFee(
        address account,
        bool excluded
    ) external onlyOwner {
        _isExcludedFromFee[account] = excluded;
    }

    function setMarketingWallet(address wallet) external onlyOwner {
        require(
            wallet != address(0),
            "Marketing wallet cannot be zero address"
        );
        marketingWallet = wallet;
    }

    function setCharityWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Charity wallet cannot be zero address");
        charityWallet = wallet;
    }

    function setLotteryWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Lottery wallet cannot be zero address");
        lotteryWallet = wallet;
    }

    function setDevWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Dev wallet cannot be zero address");
        devWallet = wallet;
    }

    function setBurnWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Burn wallet cannot be zero address");
        burnWallet = wallet;
    }

    function setBurnPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        burnPercent = taxPercentage;
    }

    function setMarketingPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        marketingPercent = taxPercentage;
    }

    function setDevPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        devPercent = taxPercentage;
    }

    function setCharityPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        charityPercent = taxPercentage;
    }

    function setLotteryPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        lotteryPercent = taxPercentage;
    }

    function setTaxThreshold(uint256 threshold) external onlyOwner {
        require(
            _taxThreshold <= (totalSupply() * 1000) / 100000,
            "Tax threshold cannot be more than 1% of total supply"
        );
        _taxThreshold = threshold;
    }

    function updateFees() internal {
        // Only run for the 24 hours after launch
        if (updateFeesActive && block.timestamp <= launchTime + 1440 minutes) {
            if (block.timestamp <= launchTime + 5 minutes) {
                buyFee = 7000;
                sellFee = 9000;
            } else if (
                block.timestamp > launchTime + 5 minutes &&
                block.timestamp <= launchTime + 15 minutes
            ) {
                buyFee = 6000;
                sellFee = 8000;
            } else if (
                block.timestamp > launchTime + 15 minutes &&
                block.timestamp <= launchTime + 30 minutes
            ) {
                buyFee = 5000;
                sellFee = 7000;
            } else if (
                block.timestamp > launchTime + 30 minutes &&
                block.timestamp <= launchTime + 120 minutes
            ) {
                buyFee = 4000;
                sellFee = 6000;
            } else if (
                block.timestamp > launchTime + 120 minutes &&
                block.timestamp <= launchTime + 1440 minutes
            ) {
                buyFee = 3000;
                sellFee = 5000;
            }
        } else if (updateFeesActive && launchTime != 0) {
            buyFee = 2000;
            sellFee = 3000;
            updateFeesActive = false;
        }
    }

    function updateMaxLimit() internal {
        // Only run for the 30 minutes after launch
        if (
            updateMaxLimitActive && block.timestamp <= launchTime + 30 minutes
        ) {
            if (block.timestamp <= launchTime + 10 minutes) {
                maxWallet = (totalSupply() * 280) / 100000;
            } else if (
                block.timestamp > launchTime + 10 minutes &&
                block.timestamp <= launchTime + 20 minutes
            ) {
                maxWallet = (totalSupply() * 550) / 100000;
            } else if (
                block.timestamp > launchTime + 20 minutes &&
                block.timestamp <= launchTime + 30 minutes
            ) {
                maxWallet = (totalSupply() * 1110) / 100000;
            }
        } else if (updateMaxLimitActive && launchTime != 0) {
            maxWallet = totalSupply();
            updateMaxLimitActive = false;
        }
    }

    // Withdraw ERC20 tokens that are potentially stuck in Contract
    function recoverTokensFromContract(
        address _tokenAddress,
        uint256 percent
    ) external onlyOwner {
        require(
            _tokenAddress != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );

        uint256 _tokenBalance = IERC20(_tokenAddress).balanceOf(address(this));

        uint256 _tokenAmount = (_tokenBalance * percent) / 100000;

        bool succ = IERC20(_tokenAddress).transfer(msg.sender, _tokenAmount);
        require(succ, "Transfer failed");
    }

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

    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 swapTokens() internal {
        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(contractTokenBalance);

        uint256 newBalance = address(this).balance - (initialBalance);

        uint256 marketingAmount = (newBalance * marketingPercent) / 100000;
        uint256 devAmount = (newBalance * devPercent) / 100000;
        uint256 charityAmount = (newBalance * charityPercent) / 100000;
        uint256 lotteryAmount = (newBalance * lotteryPercent) / 100000;
        uint256 burnAmount = (newBalance * burnPercent) / 100000;

        bool success;
        bool success1;
        bool success2;
        bool success3;
        bool success4;

        (success, ) = marketingWallet.call{value: marketingAmount, gas: 35000}(
            ""
        );
        (success1, ) = devWallet.call{value: devAmount, gas: 35000}("");
        (success2, ) = charityWallet.call{value: charityAmount, gas: 35000}("");
        (success3, ) = lotteryWallet.call{value: lotteryAmount, gas: 35000}("");
        (success4, ) = burnWallet.call{value: burnAmount, gas: 35000}("");
    }

    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
            address(this),
            block.timestamp
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        //If it's the owner, do a normal transfer
        if (
            sender == owner() || recipient == owner() || sender == address(this)
        ) {
            if (launchTime == 0 && recipient == _uniswapPair) {
                launchTime = block.timestamp;
                updateFees();
                updateMaxLimit();
            }
            _transferTokens(sender, recipient, amount);
            return;
        }

        updateFees();
        updateMaxLimit();

        bool isBuy = sender == _uniswapPair;
        bool isSell = recipient == _uniswapPair;

        uint256 buyTax;
        uint256 sellTax;

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= _taxThreshold;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[sender] &&
            !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient]
        ) {
            swapping = true;
            swapTokens();
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[sender] && isBuy) {
                if (!_isExcludedFromFee[recipient]) {
                    require(
                        balanceOf(recipient) + amount <= maxWallet,
                        "Cannot hold more tokens than limit"
                    );
                    buyTax = _calculateTax(amount, buyFee);
                    _transferTokens(sender, address(this), buyTax);
                }
                fees = buyTax;
            } else if (automatedMarketMakerPairs[recipient] && isSell) {
                if (!_isExcludedFromFee[sender]) {
                    require(
                        amount <= maxWallet,
                        "Cannot sell more tokens than limit in 1tx"
                    );
                    sellTax = _calculateTax(amount, sellFee);
                    _transferTokens(sender, address(this), sellTax);
                }
                fees = sellTax;
            }
            amount -= fees;
        }
        _transferTokens(sender, recipient, amount);
    }

    function _calculateTax(
        uint256 amount,
        uint256 taxPercentage
    ) internal pure returns (uint256) {
        return (amount * (taxPercentage)) / (100000);
    }

    fallback() external payable {}

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_charityWallet","type":"address"},{"internalType":"address","name":"_lotteryWallet","type":"address"},{"internalType":"address","name":"_burnWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_input","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TransferEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setBurnPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setCharityPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setDevPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setLotteryPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setLotteryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setMarketingPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTaxThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateFeesActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateMaxLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601260ff16600a62000017919062000bbd565b64e8d4a5100062000029919062000c0e565b6001556001600860006101000a81548160ff0219169083151502179055506001600860016101000a81548160ff021916908315150217905550614e20600f55614e20601055614e20601155614e20601255614e20601355601260ff16600a62000093919062000bbd565b631dcd6500620000a4919062000c0e565b6014556001601560016101000a81548160ff021916908315150217905550348015620000cf57600080fd5b50604051620055d5380380620055d58339818101604052810190620000f5919062000cc3565b62000115620001096200073860201b60201c565b6200074060201b60201c565b600154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006038460362000183577310ed43c718714eb63d5aa57b78b54704e256024e905062000282565b60614603620001a95773d99d1c33f9fc3444f8101754abc46c52416550d1905062000281565b6001461480620001b95750600446145b80620001c55750600346145b80620001d15750600546145b15620001f457737a250d5630b4cf539739df2c5dacb4c659f2488d905062000280565b61a86a46036200021b577360ae616a2155ee3d9a68541ba4544862310933d490506200027f565b60fa4603620002415773f491e7b69e4244ad4002bc14e878a34207e38c2990506200027e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002759062000dac565b60405180910390fd5b5b5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000328919062000dce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b6919062000dce565b6040518363ffffffff1660e01b8152600401620003d592919062000e11565b6020604051808303816000875af1158015620003f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041b919062000dce565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505062000483336080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200080460201b60201c565b620004b8306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200080460201b60201c565b620004cd60a0516001620009d560201b60201c565b85600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000724919062000e4f565b60405180910390a350505050505062000f9c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200086d9062000ee2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008df9062000f7a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009c8919062000e4f565b60405180910390a3505050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000abe5780860481111562000a965762000a9562000a30565b5b600185161562000aa65780820291505b808102905062000ab68562000a5f565b945062000a76565b94509492505050565b60008262000ad9576001905062000bac565b8162000ae9576000905062000bac565b816001811462000b02576002811462000b0d5762000b43565b600191505062000bac565b60ff84111562000b225762000b2162000a30565b5b8360020a91508482111562000b3c5762000b3b62000a30565b5b5062000bac565b5060208310610133831016604e8410600b841016171562000b7d5782820a90508381111562000b775762000b7662000a30565b5b62000bac565b62000b8c848484600162000a6c565b9250905081840481111562000ba65762000ba562000a30565b5b81810290505b9392505050565b6000819050919050565b600062000bca8262000bb3565b915062000bd78362000bb3565b925062000c067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ac7565b905092915050565b600062000c1b8262000bb3565b915062000c288362000bb3565b925082820262000c388162000bb3565b9150828204841483151762000c525762000c5162000a30565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c8b8262000c5e565b9050919050565b62000c9d8162000c7e565b811462000ca957600080fd5b50565b60008151905062000cbd8162000c92565b92915050565b600080600080600060a0868803121562000ce25762000ce162000c59565b5b600062000cf28882890162000cac565b955050602062000d058882890162000cac565b945050604062000d188882890162000cac565b935050606062000d2b8882890162000cac565b925050608062000d3e8882890162000cac565b9150509295509295909350565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000d94600f8362000d4b565b915062000da18262000d5c565b602082019050919050565b6000602082019050818103600083015262000dc78162000d85565b9050919050565b60006020828403121562000de75762000de662000c59565b5b600062000df78482850162000cac565b91505092915050565b62000e0b8162000c7e565b82525050565b600060408201905062000e28600083018562000e00565b62000e37602083018462000e00565b9392505050565b62000e498162000bb3565b82525050565b600060208201905062000e66600083018462000e3e565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000eca60248362000d4b565b915062000ed78262000e6c565b604082019050919050565b6000602082019050818103600083015262000efd8162000ebb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f6260228362000d4b565b915062000f6f8262000f04565b604082019050919050565b6000602082019050818103600083015262000f958162000f53565b9050919050565b60805160a0516145e262000ff360003960008181611086015281816113cc01528181611f0001528181611f8f0152611fe2015260008181610cb501528181612f7e0152818161305f015261308601526145e26000f3fe6080604052600436106102b25760003560e01c80636ddd171311610175578063a9059cbb116100dc578063d8020a1811610095578063f2fde38b1161006f578063f2fde38b14610a82578063f8b45b0514610aab578063fc3c28af14610ad6578063fdc8b64714610b01576102b9565b8063d8020a18146109f1578063dd62ed3e14610a1c578063e6be4a7214610a59576102b9565b8063a9059cbb146108e3578063b3ea787a14610920578063b62496f51461094b578063ba414b1014610988578063c3f0d327146109b1578063ce831ed5146109da576102b9565b80638da5cb5b1161012e5780638da5cb5b146107e55780638ea5220f1461081057806395d89b411461083b5780639a7a23d6146108665780639c3529301461088f578063a364b077146108b8576102b9565b80636ddd1713146106d357806370a08231146106fe578063715018a61461073b57806375f0a87414610752578063768dc7101461077d5780637b208769146107ba576102b9565b80632b14ca56116102195780634a8cbae1116101d25780634a8cbae1146105d75780634bf28fd0146106025780635d098b381461062d5780635e6e47aa146106565780636612e66f1461067f57806367b34e01146106a8576102b9565b80632b14ca56146104db5780632d4ed650146105065780632f4a7e511461052f57806330563bd714610558578063313ce5671461058157806347062402146105ac576102b9565b80631694505e1161026b5780631694505e146103cb57806318160ddd146103f65780631c4ba3ed146104215780631f53ac021461044a57806323b872dd14610473578063249715a6146104b0576102b9565b806303807ee5146102bb57806306228749146102e657806306fdde031461031157806307a212be1461033c578063095ea7b3146103655780630ef887e7146103a2576102b9565b366102b957005b005b3480156102c757600080fd5b506102d0610b2c565b6040516102dd9190613135565b60405180910390f35b3480156102f257600080fd5b506102fb610b32565b6040516103089190613191565b60405180910390f35b34801561031d57600080fd5b50610326610b58565b604051610333919061323c565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613294565b610b95565b005b34801561037157600080fd5b5061038c600480360381019061038791906132ed565b610c0e565b6040516103999190613348565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613294565b610c25565b005b3480156103d757600080fd5b506103e0610cb3565b6040516103ed91906133c2565b60405180910390f35b34801561040257600080fd5b5061040b610cd7565b6040516104189190613135565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906133dd565b610ce1565b005b34801561045657600080fd5b50610471600480360381019061046c91906133dd565b610d9c565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061340a565b610e57565b6040516104a79190613348565b60405180910390f35b3480156104bc57600080fd5b506104c5610e7f565b6040516104d29190613348565b60405180910390f35b3480156104e757600080fd5b506104f0610e92565b6040516104fd9190613135565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613294565b610e98565b005b34801561053b57600080fd5b5061055660048036038101906105519190613294565b610f26565b005b34801561056457600080fd5b5061057f600480360381019061057a91906133dd565b610fb4565b005b34801561058d57600080fd5b5061059661106f565b6040516105a39190613479565b60405180910390f35b3480156105b857600080fd5b506105c1611078565b6040516105ce9190613135565b60405180910390f35b3480156105e357600080fd5b506105ec61107e565b6040516105f99190613135565b60405180910390f35b34801561060e57600080fd5b50610617611084565b6040516106249190613191565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f91906133dd565b6110a8565b005b34801561066257600080fd5b5061067d60048036038101906106789190613294565b611163565b005b34801561068b57600080fd5b506106a660048036038101906106a191906134c0565b6111f1565b005b3480156106b457600080fd5b506106bd611254565b6040516106ca9190613135565b60405180910390f35b3480156106df57600080fd5b506106e861125a565b6040516106f59190613348565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906133dd565b61126d565b6040516107329190613135565b60405180910390f35b34801561074757600080fd5b506107506112b6565b005b34801561075e57600080fd5b506107676112ca565b6040516107749190613191565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906133dd565b6112f0565b6040516107b19190613348565b60405180910390f35b3480156107c657600080fd5b506107cf611310565b6040516107dc9190613191565b60405180910390f35b3480156107f157600080fd5b506107fa611336565b6040516108079190613191565b60405180910390f35b34801561081c57600080fd5b5061082561135f565b6040516108329190613191565b60405180910390f35b34801561084757600080fd5b50610850611385565b60405161085d919061323c565b60405180910390f35b34801561087257600080fd5b5061088d600480360381019061088891906134c0565b6113c2565b005b34801561089b57600080fd5b506108b660048036038101906108b191906133dd565b611466565b005b3480156108c457600080fd5b506108cd611521565b6040516108da9190613191565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906132ed565b611547565b6040516109179190613348565b60405180910390f35b34801561092c57600080fd5b50610935611563565b6040516109429190613348565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906133dd565b611576565b60405161097f9190613348565b60405180910390f35b34801561099457600080fd5b506109af60048036038101906109aa9190613565565b611596565b005b3480156109bd57600080fd5b506109d860048036038101906109d39190613294565b611673565b005b3480156109e657600080fd5b506109ef611701565b005b3480156109fd57600080fd5b50610a06611752565b604051610a139190613135565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e91906135c5565b611758565b604051610a509190613135565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b91906132ed565b6117df565b005b348015610a8e57600080fd5b50610aa96004803603810190610aa491906133dd565b6119ba565b005b348015610ab757600080fd5b50610ac0611a3d565b604051610acd9190613135565b60405180910390f35b348015610ae257600080fd5b50610aeb611a43565b604051610af89190613135565b60405180910390f35b348015610b0d57600080fd5b50610b16611a49565b604051610b239190613135565b60405180910390f35b60135481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f416c706861730000000000000000000000000000000000000000000000000000815250905090565b610b9d611a4f565b620186a06103e8610bac610cd7565b610bb69190613634565b610bc091906136a5565b6014541115610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613748565b60405180910390fd5b8060148190555050565b6000610c1b338484611acd565b6001905092915050565b610c2d611a4f565b620186a0601354601254601154601054600f54610c4a9190613768565b610c549190613768565b610c5e9190613768565b610c689190613768565b1115610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061380e565b60405180910390fd5b8060128190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600154905090565b610ce9611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f906138a0565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610da4611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90613932565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610e68858285611c96565b610e73858585611d22565b60019150509392505050565b600860009054906101000a900460ff1681565b600e5481565b610ea0611a4f565b620186a0601354601254601154601054600f54610ebd9190613768565b610ec79190613768565b610ed19190613768565b610edb9190613768565b1115610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061380e565b60405180910390fd5b80600f8190555050565b610f2e611a4f565b620186a0601354601254601154601054600f54610f4b9190613768565b610f559190613768565b610f5f9190613768565b610f699190613768565b1115610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa19061380e565b60405180910390fd5b8060108190555050565b610fbc611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906139c4565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600d5481565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110b0611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690613a56565b60405180910390fd5b80600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61116b611a4f565b620186a0601354601254601154601054600f546111889190613768565b6111929190613768565b61119c9190613768565b6111a69190613768565b11156111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de9061380e565b60405180910390fd5b8060118190555050565b6111f9611a4f565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b601560019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be611a4f565b6112c860006124e9565b565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f414c504841530000000000000000000000000000000000000000000000000000815250905090565b6113ca611a4f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90613ae8565b60405180910390fd5b61146282826125ad565b5050565b61146e611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613b7a565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339050611558818585611d22565b600191505092915050565b600860019054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b61159e611a4f565b60006115a8611336565b905060005b8484905081101561166c5760008585838181106115cd576115cc613b9a565b5b90506020020160208101906115e291906133dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90613c3b565b60405180910390fd5b61165e838286612608565b5080806001019150506115ad565b5050505050565b61167b611a4f565b620186a0601354601254601154601054600f546116989190613768565b6116a29190613768565b6116ac9190613768565b6116b69190613768565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee9061380e565b60405180910390fd5b8060138190555050565b611709611a4f565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561174f573d6000803e3d6000fd5b50565b600f5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117e7611a4f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90613ccd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118909190613191565b602060405180830381865afa1580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190613d02565b90506000620186a083836118e59190613634565b6118ef91906136a5565b905060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161192e929190613d2f565b6020604051808303816000875af115801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190613d6d565b9050806119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613de6565b60405180910390fd5b5050505050565b6119c2611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2890613e78565b60405180910390fd5b611a3a816124e9565b50565b60025481565b60105481565b60125481565b611a5761278d565b73ffffffffffffffffffffffffffffffffffffffff16611a75611336565b73ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613ee4565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290614008565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c899190613135565b60405180910390a3505050565b6000611ca28484611758565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d1c5781811015611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614074565b60405180910390fd5b611d1b8484848403611acd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613c3b565b60405180910390fd5b60008111611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90614198565b60405180910390fd5b611e4b611336565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb65750611e87611336565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611eec57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611f7b576000600754148015611f4e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f6b5742600781905550611f62612795565b611f6a612972565b5b611f76838383612608565b6124e4565b611f83612795565b611f8b612972565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600080600061203f3061126d565b9050600060145482101590508080156120645750601560019054906101000a900460ff165b801561207d5750601560009054906101000a900460ff16155b80156120d35750600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121295750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561217f5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121c3576001601560006101000a81548160ff0219169083151502179055506121a7612afa565b6000601560006101000a81548160ff0219169083151502179055505b6000601560009054906101000a900460ff16159050600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122795750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561228357600090505b600081156124d057600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e15750875b156123b157600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123a957600254896123448c61126d565b61234e9190613768565b111561238f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123869061422a565b60405180910390fd5b61239b89600d54612ebb565b95506123a88b3088612608565b5b8590506124c1565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124075750865b156124c057600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124bc576002548911156124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612499906142bc565b60405180910390fd5b6124ae89600e54612ebb565b94506124bb8b3087612608565b5b8490505b5b80896124cd91906142dc565b98505b6124db8b8b8b612608565b50505050505050505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268690614382565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161277f9190613135565b60405180910390a350505050565b600033905090565b600860009054906101000a900460ff1680156127c15750620151806007546127bd9190613768565b4211155b1561291d5761012c6007546127d69190613768565b42116127f357611b58600d81905550612328600e81905550612918565b61012c6007546128039190613768565b42118015612820575061038460075461281c9190613768565b4211155b1561283c57611770600d81905550611f40600e81905550612917565b61038460075461284c9190613768565b4211801561286957506107086007546128659190613768565b4211155b1561288557611388600d81905550611b58600e81905550612916565b6107086007546128959190613768565b421180156128b25750611c206007546128ae9190613768565b4211155b156128ce57610fa0600d81905550611770600e81905550612915565b611c206007546128de9190613768565b421180156128fc5750620151806007546128f89190613768565b4211155b1561291457610bb8600d81905550611388600e819055505b5b5b5b5b612970565b600860009054906101000a900460ff16801561293c5750600060075414155b1561296f576107d0600d81905550610bb8600e819055506000600860006101000a81548160ff0219169083151502179055505b5b565b600860019054906101000a900460ff16801561299d57506107086007546129999190613768565b4211155b15612aa9576102586007546129b29190613768565b42116129e657620186a06101186129c7610cd7565b6129d19190613634565b6129db91906136a5565b600281905550612aa4565b6102586007546129f69190613768565b42118015612a1357506104b0600754612a0f9190613768565b4211155b15612a4657620186a0610226612a27610cd7565b612a319190613634565b612a3b91906136a5565b600281905550612aa3565b6104b0600754612a569190613768565b42118015612a735750610708600754612a6f9190613768565b4211155b15612aa257620186a0610456612a87610cd7565b612a919190613634565b612a9b91906136a5565b6002819055505b5b5b612af8565b600860019054906101000a900460ff168015612ac85750600060075414155b15612af757612ad5610cd7565b6002819055506000600860016101000a81548160ff0219169083151502179055505b5b565b6000612b053061126d565b90506000479050612b1582612edf565b60008147612b2391906142dc565b90506000620186a0600f5483612b399190613634565b612b4391906136a5565b90506000620186a060105484612b599190613634565b612b6391906136a5565b90506000620186a060115485612b799190613634565b612b8391906136a5565b90506000620186a060125486612b999190613634565b612ba391906136a5565b90506000620186a060135487612bb99190613634565b612bc391906136a5565b90506000806000806000600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a6188b890604051612c17906143d3565b600060405180830381858888f193505050503d8060008114612c55576040519150601f19603f3d011682016040523d82523d6000602084013e612c5a565b606091505b505080955050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16896188b890604051612caa906143d3565b600060405180830381858888f193505050503d8060008114612ce8576040519150601f19603f3d011682016040523d82523d6000602084013e612ced565b606091505b505080945050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16886188b890604051612d3d906143d3565b600060405180830381858888f193505050503d8060008114612d7b576040519150601f19603f3d011682016040523d82523d6000602084013e612d80565b606091505b505080935050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16876188b890604051612dd0906143d3565b600060405180830381858888f193505050503d8060008114612e0e576040519150601f19603f3d011682016040523d82523d6000602084013e612e13565b606091505b505080925050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866188b890604051612e63906143d3565b600060405180830381858888f193505050503d8060008114612ea1576040519150601f19603f3d011682016040523d82523d6000602084013e612ea6565b606091505b50508091505050505050505050505050505050565b6000620186a08284612ecd9190613634565b612ed791906136a5565b905092915050565b6000600267ffffffffffffffff811115612efc57612efb6143e8565b5b604051908082528060200260200182016040528015612f2a5781602001602082028036833780820191505090505b5090503081600081518110612f4257612f41613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300b919061442c565b8160018151811061301f5761301e613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613084307f000000000000000000000000000000000000000000000000000000000000000084611acd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e6959493929190614552565b600060405180830381600087803b15801561310057600080fd5b505af1158015613114573d6000803e3d6000fd5b505050505050565b6000819050919050565b61312f8161311c565b82525050565b600060208201905061314a6000830184613126565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317b82613150565b9050919050565b61318b81613170565b82525050565b60006020820190506131a66000830184613182565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e65780820151818401526020810190506131cb565b60008484015250505050565b6000601f19601f8301169050919050565b600061320e826131ac565b61321881856131b7565b93506132288185602086016131c8565b613231816131f2565b840191505092915050565b600060208201905081810360008301526132568184613203565b905092915050565b600080fd5b600080fd5b6132718161311c565b811461327c57600080fd5b50565b60008135905061328e81613268565b92915050565b6000602082840312156132aa576132a961325e565b5b60006132b88482850161327f565b91505092915050565b6132ca81613170565b81146132d557600080fd5b50565b6000813590506132e7816132c1565b92915050565b600080604083850312156133045761330361325e565b5b6000613312858286016132d8565b92505060206133238582860161327f565b9150509250929050565b60008115159050919050565b6133428161332d565b82525050565b600060208201905061335d6000830184613339565b92915050565b6000819050919050565b600061338861338361337e84613150565b613363565b613150565b9050919050565b600061339a8261336d565b9050919050565b60006133ac8261338f565b9050919050565b6133bc816133a1565b82525050565b60006020820190506133d760008301846133b3565b92915050565b6000602082840312156133f3576133f261325e565b5b6000613401848285016132d8565b91505092915050565b6000806000606084860312156134235761342261325e565b5b6000613431868287016132d8565b9350506020613442868287016132d8565b92505060406134538682870161327f565b9150509250925092565b600060ff82169050919050565b6134738161345d565b82525050565b600060208201905061348e600083018461346a565b92915050565b61349d8161332d565b81146134a857600080fd5b50565b6000813590506134ba81613494565b92915050565b600080604083850312156134d7576134d661325e565b5b60006134e5858286016132d8565b92505060206134f6858286016134ab565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261352557613524613500565b5b8235905067ffffffffffffffff81111561354257613541613505565b5b60208301915083602082028301111561355e5761355d61350a565b5b9250929050565b60008060006040848603121561357e5761357d61325e565b5b600084013567ffffffffffffffff81111561359c5761359b613263565b5b6135a88682870161350f565b935093505060206135bb8682870161327f565b9150509250925092565b600080604083850312156135dc576135db61325e565b5b60006135ea858286016132d8565b92505060206135fb858286016132d8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061363f8261311c565b915061364a8361311c565b92508282026136588161311c565b9150828204841483151761366f5761366e613605565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136b08261311c565b91506136bb8361311c565b9250826136cb576136ca613676565b5b828204905092915050565b7f546178207468726573686f6c642063616e6e6f74206265206d6f72652074686160008201527f6e203125206f6620746f74616c20737570706c79000000000000000000000000602082015250565b60006137326034836131b7565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b60006137738261311c565b915061377e8361311c565b925082820190508082111561379657613795613605565b5b92915050565b7f5461782070657263656e746167652063616e6e6f74206578636565642031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006137f86021836131b7565b91506138038261379c565b604082019050919050565b60006020820190508181036000830152613827816137eb565b9050919050565b7f4275726e2077616c6c65742063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061388a6022836131b7565b91506138958261382e565b604082019050919050565b600060208201905081810360008301526138b98161387d565b9050919050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061391c6021836131b7565b9150613927826138c0565b604082019050919050565b6000602082019050818103600083015261394b8161390f565b9050919050565b7f436861726974792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ae6025836131b7565b91506139b982613952565b604082019050919050565b600060208201905081810360008301526139dd816139a1565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613a406027836131b7565b9150613a4b826139e4565b604082019050919050565b60006020820190508181036000830152613a6f81613a33565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ad26039836131b7565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b7f4c6f74746572792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b646025836131b7565b9150613b6f82613b08565b604082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c256023836131b7565b9150613c3082613bc9565b604082019050919050565b60006020820190508181036000830152613c5481613c18565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613cb76036836131b7565b9150613cc282613c5b565b604082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b600081519050613cfc81613268565b92915050565b600060208284031215613d1857613d1761325e565b5b6000613d2684828501613ced565b91505092915050565b6000604082019050613d446000830185613182565b613d516020830184613126565b9392505050565b600081519050613d6781613494565b92915050565b600060208284031215613d8357613d8261325e565b5b6000613d9184828501613d58565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613dd0600f836131b7565b9150613ddb82613d9a565b602082019050919050565b60006020820190508181036000830152613dff81613dc3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e626026836131b7565b9150613e6d82613e06565b604082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ece6020836131b7565b9150613ed982613e98565b602082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f606024836131b7565b9150613f6b82613f04565b604082019050919050565b60006020820190508181036000830152613f8f81613f53565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ff26022836131b7565b9150613ffd82613f96565b604082019050919050565b6000602082019050818103600083015261402181613fe5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061405e601d836131b7565b915061406982614028565b602082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f06025836131b7565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141826029836131b7565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f43616e6e6f7420686f6c64206d6f726520746f6b656e73207468616e206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b60006142146022836131b7565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f43616e6e6f742073656c6c206d6f726520746f6b656e73207468616e206c696d60008201527f697420696e203174780000000000000000000000000000000000000000000000602082015250565b60006142a66029836131b7565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b60006142e78261311c565b91506142f28361311c565b925082820390508181111561430a57614309613605565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061436c6026836131b7565b915061437782614310565b604082019050919050565b6000602082019050818103600083015261439b8161435f565b9050919050565b600081905092915050565b50565b60006143bd6000836143a2565b91506143c8826143ad565b600082019050919050565b60006143de826143b0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614426816132c1565b92915050565b6000602082840312156144425761444161325e565b5b600061445084828501614417565b91505092915050565b6000819050919050565b600061447e61447961447484614459565b613363565b61311c565b9050919050565b61448e81614463565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144c981613170565b82525050565b60006144db83836144c0565b60208301905092915050565b6000602082019050919050565b60006144ff82614494565b614509818561449f565b9350614514836144b0565b8060005b8381101561454557815161452c88826144cf565b9750614537836144e7565b925050600181019050614518565b5085935050505092915050565b600060a0820190506145676000830188613126565b6145746020830187614485565b818103604083015261458681866144f4565b90506145956060830185613182565b6145a26080830184613126565b969550505050505056fea2646970667358221220ac9e562903c49ceee2e6f7aff6f8e07c031494d10f69b7a7e69e34736abf05ec64736f6c634300081300330000000000000000000000000a3be8359ff4aa57808433af0d25c75482e2f83e000000000000000000000000c35f222173fb692c9b7be90eb15a42f815d7ec6c000000000000000000000000716c71e6b2a52a01d7bb5b00cf028445962421bc0000000000000000000000003a41f8c08cfd040548d081949aef68f9ec1a6952000000000000000000000000e9026c7338377cbabaca64bceed9a813f2e93354

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80636ddd171311610175578063a9059cbb116100dc578063d8020a1811610095578063f2fde38b1161006f578063f2fde38b14610a82578063f8b45b0514610aab578063fc3c28af14610ad6578063fdc8b64714610b01576102b9565b8063d8020a18146109f1578063dd62ed3e14610a1c578063e6be4a7214610a59576102b9565b8063a9059cbb146108e3578063b3ea787a14610920578063b62496f51461094b578063ba414b1014610988578063c3f0d327146109b1578063ce831ed5146109da576102b9565b80638da5cb5b1161012e5780638da5cb5b146107e55780638ea5220f1461081057806395d89b411461083b5780639a7a23d6146108665780639c3529301461088f578063a364b077146108b8576102b9565b80636ddd1713146106d357806370a08231146106fe578063715018a61461073b57806375f0a87414610752578063768dc7101461077d5780637b208769146107ba576102b9565b80632b14ca56116102195780634a8cbae1116101d25780634a8cbae1146105d75780634bf28fd0146106025780635d098b381461062d5780635e6e47aa146106565780636612e66f1461067f57806367b34e01146106a8576102b9565b80632b14ca56146104db5780632d4ed650146105065780632f4a7e511461052f57806330563bd714610558578063313ce5671461058157806347062402146105ac576102b9565b80631694505e1161026b5780631694505e146103cb57806318160ddd146103f65780631c4ba3ed146104215780631f53ac021461044a57806323b872dd14610473578063249715a6146104b0576102b9565b806303807ee5146102bb57806306228749146102e657806306fdde031461031157806307a212be1461033c578063095ea7b3146103655780630ef887e7146103a2576102b9565b366102b957005b005b3480156102c757600080fd5b506102d0610b2c565b6040516102dd9190613135565b60405180910390f35b3480156102f257600080fd5b506102fb610b32565b6040516103089190613191565b60405180910390f35b34801561031d57600080fd5b50610326610b58565b604051610333919061323c565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613294565b610b95565b005b34801561037157600080fd5b5061038c600480360381019061038791906132ed565b610c0e565b6040516103999190613348565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613294565b610c25565b005b3480156103d757600080fd5b506103e0610cb3565b6040516103ed91906133c2565b60405180910390f35b34801561040257600080fd5b5061040b610cd7565b6040516104189190613135565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906133dd565b610ce1565b005b34801561045657600080fd5b50610471600480360381019061046c91906133dd565b610d9c565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061340a565b610e57565b6040516104a79190613348565b60405180910390f35b3480156104bc57600080fd5b506104c5610e7f565b6040516104d29190613348565b60405180910390f35b3480156104e757600080fd5b506104f0610e92565b6040516104fd9190613135565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613294565b610e98565b005b34801561053b57600080fd5b5061055660048036038101906105519190613294565b610f26565b005b34801561056457600080fd5b5061057f600480360381019061057a91906133dd565b610fb4565b005b34801561058d57600080fd5b5061059661106f565b6040516105a39190613479565b60405180910390f35b3480156105b857600080fd5b506105c1611078565b6040516105ce9190613135565b60405180910390f35b3480156105e357600080fd5b506105ec61107e565b6040516105f99190613135565b60405180910390f35b34801561060e57600080fd5b50610617611084565b6040516106249190613191565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f91906133dd565b6110a8565b005b34801561066257600080fd5b5061067d60048036038101906106789190613294565b611163565b005b34801561068b57600080fd5b506106a660048036038101906106a191906134c0565b6111f1565b005b3480156106b457600080fd5b506106bd611254565b6040516106ca9190613135565b60405180910390f35b3480156106df57600080fd5b506106e861125a565b6040516106f59190613348565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906133dd565b61126d565b6040516107329190613135565b60405180910390f35b34801561074757600080fd5b506107506112b6565b005b34801561075e57600080fd5b506107676112ca565b6040516107749190613191565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906133dd565b6112f0565b6040516107b19190613348565b60405180910390f35b3480156107c657600080fd5b506107cf611310565b6040516107dc9190613191565b60405180910390f35b3480156107f157600080fd5b506107fa611336565b6040516108079190613191565b60405180910390f35b34801561081c57600080fd5b5061082561135f565b6040516108329190613191565b60405180910390f35b34801561084757600080fd5b50610850611385565b60405161085d919061323c565b60405180910390f35b34801561087257600080fd5b5061088d600480360381019061088891906134c0565b6113c2565b005b34801561089b57600080fd5b506108b660048036038101906108b191906133dd565b611466565b005b3480156108c457600080fd5b506108cd611521565b6040516108da9190613191565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906132ed565b611547565b6040516109179190613348565b60405180910390f35b34801561092c57600080fd5b50610935611563565b6040516109429190613348565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906133dd565b611576565b60405161097f9190613348565b60405180910390f35b34801561099457600080fd5b506109af60048036038101906109aa9190613565565b611596565b005b3480156109bd57600080fd5b506109d860048036038101906109d39190613294565b611673565b005b3480156109e657600080fd5b506109ef611701565b005b3480156109fd57600080fd5b50610a06611752565b604051610a139190613135565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e91906135c5565b611758565b604051610a509190613135565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b91906132ed565b6117df565b005b348015610a8e57600080fd5b50610aa96004803603810190610aa491906133dd565b6119ba565b005b348015610ab757600080fd5b50610ac0611a3d565b604051610acd9190613135565b60405180910390f35b348015610ae257600080fd5b50610aeb611a43565b604051610af89190613135565b60405180910390f35b348015610b0d57600080fd5b50610b16611a49565b604051610b239190613135565b60405180910390f35b60135481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f416c706861730000000000000000000000000000000000000000000000000000815250905090565b610b9d611a4f565b620186a06103e8610bac610cd7565b610bb69190613634565b610bc091906136a5565b6014541115610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613748565b60405180910390fd5b8060148190555050565b6000610c1b338484611acd565b6001905092915050565b610c2d611a4f565b620186a0601354601254601154601054600f54610c4a9190613768565b610c549190613768565b610c5e9190613768565b610c689190613768565b1115610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061380e565b60405180910390fd5b8060128190555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600154905090565b610ce9611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f906138a0565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610da4611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90613932565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610e68858285611c96565b610e73858585611d22565b60019150509392505050565b600860009054906101000a900460ff1681565b600e5481565b610ea0611a4f565b620186a0601354601254601154601054600f54610ebd9190613768565b610ec79190613768565b610ed19190613768565b610edb9190613768565b1115610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061380e565b60405180910390fd5b80600f8190555050565b610f2e611a4f565b620186a0601354601254601154601054600f54610f4b9190613768565b610f559190613768565b610f5f9190613768565b610f699190613768565b1115610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa19061380e565b60405180910390fd5b8060108190555050565b610fbc611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906139c4565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600d5481565b60115481565b7f0000000000000000000000001ec478cc20c1a453871732f5494da74ccbb61c9781565b6110b0611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690613a56565b60405180910390fd5b80600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61116b611a4f565b620186a0601354601254601154601054600f546111889190613768565b6111929190613768565b61119c9190613768565b6111a69190613768565b11156111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de9061380e565b60405180910390fd5b8060118190555050565b6111f9611a4f565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b601560019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be611a4f565b6112c860006124e9565b565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f414c504841530000000000000000000000000000000000000000000000000000815250905090565b6113ca611a4f565b7f0000000000000000000000001ec478cc20c1a453871732f5494da74ccbb61c9773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90613ae8565b60405180910390fd5b61146282826125ad565b5050565b61146e611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613b7a565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339050611558818585611d22565b600191505092915050565b600860019054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b61159e611a4f565b60006115a8611336565b905060005b8484905081101561166c5760008585838181106115cd576115cc613b9a565b5b90506020020160208101906115e291906133dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90613c3b565b60405180910390fd5b61165e838286612608565b5080806001019150506115ad565b5050505050565b61167b611a4f565b620186a0601354601254601154601054600f546116989190613768565b6116a29190613768565b6116ac9190613768565b6116b69190613768565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee9061380e565b60405180910390fd5b8060138190555050565b611709611a4f565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561174f573d6000803e3d6000fd5b50565b600f5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117e7611a4f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90613ccd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118909190613191565b602060405180830381865afa1580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190613d02565b90506000620186a083836118e59190613634565b6118ef91906136a5565b905060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161192e929190613d2f565b6020604051808303816000875af115801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190613d6d565b9050806119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613de6565b60405180910390fd5b5050505050565b6119c2611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2890613e78565b60405180910390fd5b611a3a816124e9565b50565b60025481565b60105481565b60125481565b611a5761278d565b73ffffffffffffffffffffffffffffffffffffffff16611a75611336565b73ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613ee4565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290614008565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c899190613135565b60405180910390a3505050565b6000611ca28484611758565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d1c5781811015611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614074565b60405180910390fd5b611d1b8484848403611acd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613c3b565b60405180910390fd5b60008111611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90614198565b60405180910390fd5b611e4b611336565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb65750611e87611336565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611eec57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611f7b576000600754148015611f4e57507f0000000000000000000000001ec478cc20c1a453871732f5494da74ccbb61c9773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f6b5742600781905550611f62612795565b611f6a612972565b5b611f76838383612608565b6124e4565b611f83612795565b611f8b612972565b60007f0000000000000000000000001ec478cc20c1a453871732f5494da74ccbb61c9773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f0000000000000000000000001ec478cc20c1a453871732f5494da74ccbb61c9773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600080600061203f3061126d565b9050600060145482101590508080156120645750601560019054906101000a900460ff165b801561207d5750601560009054906101000a900460ff16155b80156120d35750600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121295750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561217f5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121c3576001601560006101000a81548160ff0219169083151502179055506121a7612afa565b6000601560006101000a81548160ff0219169083151502179055505b6000601560009054906101000a900460ff16159050600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122795750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561228357600090505b600081156124d057600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e15750875b156123b157600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123a957600254896123448c61126d565b61234e9190613768565b111561238f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123869061422a565b60405180910390fd5b61239b89600d54612ebb565b95506123a88b3088612608565b5b8590506124c1565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124075750865b156124c057600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124bc576002548911156124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612499906142bc565b60405180910390fd5b6124ae89600e54612ebb565b94506124bb8b3087612608565b5b8490505b5b80896124cd91906142dc565b98505b6124db8b8b8b612608565b50505050505050505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268690614382565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161277f9190613135565b60405180910390a350505050565b600033905090565b600860009054906101000a900460ff1680156127c15750620151806007546127bd9190613768565b4211155b1561291d5761012c6007546127d69190613768565b42116127f357611b58600d81905550612328600e81905550612918565b61012c6007546128039190613768565b42118015612820575061038460075461281c9190613768565b4211155b1561283c57611770600d81905550611f40600e81905550612917565b61038460075461284c9190613768565b4211801561286957506107086007546128659190613768565b4211155b1561288557611388600d81905550611b58600e81905550612916565b6107086007546128959190613768565b421180156128b25750611c206007546128ae9190613768565b4211155b156128ce57610fa0600d81905550611770600e81905550612915565b611c206007546128de9190613768565b421180156128fc5750620151806007546128f89190613768565b4211155b1561291457610bb8600d81905550611388600e819055505b5b5b5b5b612970565b600860009054906101000a900460ff16801561293c5750600060075414155b1561296f576107d0600d81905550610bb8600e819055506000600860006101000a81548160ff0219169083151502179055505b5b565b600860019054906101000a900460ff16801561299d57506107086007546129999190613768565b4211155b15612aa9576102586007546129b29190613768565b42116129e657620186a06101186129c7610cd7565b6129d19190613634565b6129db91906136a5565b600281905550612aa4565b6102586007546129f69190613768565b42118015612a1357506104b0600754612a0f9190613768565b4211155b15612a4657620186a0610226612a27610cd7565b612a319190613634565b612a3b91906136a5565b600281905550612aa3565b6104b0600754612a569190613768565b42118015612a735750610708600754612a6f9190613768565b4211155b15612aa257620186a0610456612a87610cd7565b612a919190613634565b612a9b91906136a5565b6002819055505b5b5b612af8565b600860019054906101000a900460ff168015612ac85750600060075414155b15612af757612ad5610cd7565b6002819055506000600860016101000a81548160ff0219169083151502179055505b5b565b6000612b053061126d565b90506000479050612b1582612edf565b60008147612b2391906142dc565b90506000620186a0600f5483612b399190613634565b612b4391906136a5565b90506000620186a060105484612b599190613634565b612b6391906136a5565b90506000620186a060115485612b799190613634565b612b8391906136a5565b90506000620186a060125486612b999190613634565b612ba391906136a5565b90506000620186a060135487612bb99190613634565b612bc391906136a5565b90506000806000806000600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a6188b890604051612c17906143d3565b600060405180830381858888f193505050503d8060008114612c55576040519150601f19603f3d011682016040523d82523d6000602084013e612c5a565b606091505b505080955050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16896188b890604051612caa906143d3565b600060405180830381858888f193505050503d8060008114612ce8576040519150601f19603f3d011682016040523d82523d6000602084013e612ced565b606091505b505080945050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16886188b890604051612d3d906143d3565b600060405180830381858888f193505050503d8060008114612d7b576040519150601f19603f3d011682016040523d82523d6000602084013e612d80565b606091505b505080935050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16876188b890604051612dd0906143d3565b600060405180830381858888f193505050503d8060008114612e0e576040519150601f19603f3d011682016040523d82523d6000602084013e612e13565b606091505b505080925050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866188b890604051612e63906143d3565b600060405180830381858888f193505050503d8060008114612ea1576040519150601f19603f3d011682016040523d82523d6000602084013e612ea6565b606091505b50508091505050505050505050505050505050565b6000620186a08284612ecd9190613634565b612ed791906136a5565b905092915050565b6000600267ffffffffffffffff811115612efc57612efb6143e8565b5b604051908082528060200260200182016040528015612f2a5781602001602082028036833780820191505090505b5090503081600081518110612f4257612f41613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300b919061442c565b8160018151811061301f5761301e613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613084307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611acd565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e6959493929190614552565b600060405180830381600087803b15801561310057600080fd5b505af1158015613114573d6000803e3d6000fd5b505050505050565b6000819050919050565b61312f8161311c565b82525050565b600060208201905061314a6000830184613126565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317b82613150565b9050919050565b61318b81613170565b82525050565b60006020820190506131a66000830184613182565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e65780820151818401526020810190506131cb565b60008484015250505050565b6000601f19601f8301169050919050565b600061320e826131ac565b61321881856131b7565b93506132288185602086016131c8565b613231816131f2565b840191505092915050565b600060208201905081810360008301526132568184613203565b905092915050565b600080fd5b600080fd5b6132718161311c565b811461327c57600080fd5b50565b60008135905061328e81613268565b92915050565b6000602082840312156132aa576132a961325e565b5b60006132b88482850161327f565b91505092915050565b6132ca81613170565b81146132d557600080fd5b50565b6000813590506132e7816132c1565b92915050565b600080604083850312156133045761330361325e565b5b6000613312858286016132d8565b92505060206133238582860161327f565b9150509250929050565b60008115159050919050565b6133428161332d565b82525050565b600060208201905061335d6000830184613339565b92915050565b6000819050919050565b600061338861338361337e84613150565b613363565b613150565b9050919050565b600061339a8261336d565b9050919050565b60006133ac8261338f565b9050919050565b6133bc816133a1565b82525050565b60006020820190506133d760008301846133b3565b92915050565b6000602082840312156133f3576133f261325e565b5b6000613401848285016132d8565b91505092915050565b6000806000606084860312156134235761342261325e565b5b6000613431868287016132d8565b9350506020613442868287016132d8565b92505060406134538682870161327f565b9150509250925092565b600060ff82169050919050565b6134738161345d565b82525050565b600060208201905061348e600083018461346a565b92915050565b61349d8161332d565b81146134a857600080fd5b50565b6000813590506134ba81613494565b92915050565b600080604083850312156134d7576134d661325e565b5b60006134e5858286016132d8565b92505060206134f6858286016134ab565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261352557613524613500565b5b8235905067ffffffffffffffff81111561354257613541613505565b5b60208301915083602082028301111561355e5761355d61350a565b5b9250929050565b60008060006040848603121561357e5761357d61325e565b5b600084013567ffffffffffffffff81111561359c5761359b613263565b5b6135a88682870161350f565b935093505060206135bb8682870161327f565b9150509250925092565b600080604083850312156135dc576135db61325e565b5b60006135ea858286016132d8565b92505060206135fb858286016132d8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061363f8261311c565b915061364a8361311c565b92508282026136588161311c565b9150828204841483151761366f5761366e613605565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136b08261311c565b91506136bb8361311c565b9250826136cb576136ca613676565b5b828204905092915050565b7f546178207468726573686f6c642063616e6e6f74206265206d6f72652074686160008201527f6e203125206f6620746f74616c20737570706c79000000000000000000000000602082015250565b60006137326034836131b7565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b60006137738261311c565b915061377e8361311c565b925082820190508082111561379657613795613605565b5b92915050565b7f5461782070657263656e746167652063616e6e6f74206578636565642031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006137f86021836131b7565b91506138038261379c565b604082019050919050565b60006020820190508181036000830152613827816137eb565b9050919050565b7f4275726e2077616c6c65742063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061388a6022836131b7565b91506138958261382e565b604082019050919050565b600060208201905081810360008301526138b98161387d565b9050919050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061391c6021836131b7565b9150613927826138c0565b604082019050919050565b6000602082019050818103600083015261394b8161390f565b9050919050565b7f436861726974792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ae6025836131b7565b91506139b982613952565b604082019050919050565b600060208201905081810360008301526139dd816139a1565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613a406027836131b7565b9150613a4b826139e4565b604082019050919050565b60006020820190508181036000830152613a6f81613a33565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ad26039836131b7565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b7f4c6f74746572792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b646025836131b7565b9150613b6f82613b08565b604082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c256023836131b7565b9150613c3082613bc9565b604082019050919050565b60006020820190508181036000830152613c5481613c18565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613cb76036836131b7565b9150613cc282613c5b565b604082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b600081519050613cfc81613268565b92915050565b600060208284031215613d1857613d1761325e565b5b6000613d2684828501613ced565b91505092915050565b6000604082019050613d446000830185613182565b613d516020830184613126565b9392505050565b600081519050613d6781613494565b92915050565b600060208284031215613d8357613d8261325e565b5b6000613d9184828501613d58565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613dd0600f836131b7565b9150613ddb82613d9a565b602082019050919050565b60006020820190508181036000830152613dff81613dc3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e626026836131b7565b9150613e6d82613e06565b604082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ece6020836131b7565b9150613ed982613e98565b602082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f606024836131b7565b9150613f6b82613f04565b604082019050919050565b60006020820190508181036000830152613f8f81613f53565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ff26022836131b7565b9150613ffd82613f96565b604082019050919050565b6000602082019050818103600083015261402181613fe5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061405e601d836131b7565b915061406982614028565b602082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f06025836131b7565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141826029836131b7565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f43616e6e6f7420686f6c64206d6f726520746f6b656e73207468616e206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b60006142146022836131b7565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f43616e6e6f742073656c6c206d6f726520746f6b656e73207468616e206c696d60008201527f697420696e203174780000000000000000000000000000000000000000000000602082015250565b60006142a66029836131b7565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b60006142e78261311c565b91506142f28361311c565b925082820390508181111561430a57614309613605565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061436c6026836131b7565b915061437782614310565b604082019050919050565b6000602082019050818103600083015261439b8161435f565b9050919050565b600081905092915050565b50565b60006143bd6000836143a2565b91506143c8826143ad565b600082019050919050565b60006143de826143b0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614426816132c1565b92915050565b6000602082840312156144425761444161325e565b5b600061445084828501614417565b91505092915050565b6000819050919050565b600061447e61447961447484614459565b613363565b61311c565b9050919050565b61448e81614463565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144c981613170565b82525050565b60006144db83836144c0565b60208301905092915050565b6000602082019050919050565b60006144ff82614494565b614509818561449f565b9350614514836144b0565b8060005b8381101561454557815161452c88826144cf565b9750614537836144e7565b925050600181019050614518565b5085935050505092915050565b600060a0820190506145676000830188613126565b6145746020830187614485565b818103604083015261458681866144f4565b90506145956060830185613182565b6145a26080830184613126565b969550505050505056fea2646970667358221220ac9e562903c49ceee2e6f7aff6f8e07c031494d10f69b7a7e69e34736abf05ec64736f6c63430008130033

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

0000000000000000000000000a3be8359ff4aa57808433af0d25c75482e2f83e000000000000000000000000c35f222173fb692c9b7be90eb15a42f815d7ec6c000000000000000000000000716c71e6b2a52a01d7bb5b00cf028445962421bc0000000000000000000000003a41f8c08cfd040548d081949aef68f9ec1a6952000000000000000000000000e9026c7338377cbabaca64bceed9a813f2e93354

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x0a3be8359ff4Aa57808433AF0d25C75482E2f83e
Arg [1] : _devWallet (address): 0xc35F222173fB692c9B7bE90eB15a42f815D7eC6c
Arg [2] : _charityWallet (address): 0x716C71E6b2a52A01D7BB5b00cF028445962421Bc
Arg [3] : _lotteryWallet (address): 0x3a41f8C08cFD040548d081949aEf68F9Ec1A6952
Arg [4] : _burnWallet (address): 0xE9026c7338377CbABaCA64BCeeD9a813f2e93354

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000a3be8359ff4aa57808433af0d25c75482e2f83e
Arg [1] : 000000000000000000000000c35f222173fb692c9b7be90eb15a42f815d7ec6c
Arg [2] : 000000000000000000000000716c71e6b2a52a01d7bb5b00cf028445962421bc
Arg [3] : 0000000000000000000000003a41f8c08cfd040548d081949aef68f9ec1a6952
Arg [4] : 000000000000000000000000e9026c7338377cbabaca64bceed9a813f2e93354


Deployed Bytecode Sourcemap

9039:19906:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10186:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9863:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13222:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20191:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14438:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19796:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10359:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13523:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18044:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17865:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13971:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9635:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9925:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18615:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19014:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17483:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13424:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9897:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10070:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10417;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17249:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19401:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17080:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10243:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10491:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13630:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2564:103;;;;;;;;;;;;;:::i;:::-;;9725:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9543:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1916:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9762:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13321:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16631:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17674:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9828:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13756:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9677:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9479:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16124:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18226:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23457:123;;;;;;;;;;;;;:::i;:::-;;9956:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14263:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22900:549;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2822:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9293:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10016:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10128:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10186:34;;;;:::o;9863:25::-;;;;;;;;;;;;;:::o;13222:91::-;13267:13;13300:5;;;;;;;;;;;;;;;;;13293:12;;13222:91;:::o;20191:268::-;1802:13;:11;:13::i;:::-;20329:6:::1;20321:4;20305:13;:11;:13::i;:::-;:20;;;;:::i;:::-;20304:31;;;;:::i;:::-;20287:13;;:48;;20265:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;20442:9;20426:13;:25;;;;20191:268:::0;:::o;14438:150::-;14504:4;14521:37;14530:10;14542:7;14551:6;14521:8;:37::i;:::-;14576:4;14569:11;;14438:150;;;;:::o;19796:387::-;1802:13;:11;:13::i;:::-;20067:6:::1;20035:11;;20001:14;;19967;;19937:10;;19901:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;19879:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;20162:13;20145:14;:30;;;;19796:387:::0;:::o;10359:51::-;;;:::o;13523:99::-;13575:7;13602:12;;13595:19;;13523:99;:::o;18044:174::-;1802:13;:11;:13::i;:::-;18139:1:::1;18121:20;;:6;:20;;::::0;18113:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18204:6;18191:10;;:19;;;;;;;;;;;;;;;;;;18044:174:::0;:::o;17865:171::-;1802:13;:11;:13::i;:::-;17959:1:::1;17941:20;;:6;:20;;::::0;17933:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18022:6;18010:9;;:18;;;;;;;;;;;;;;;;;;17865:171:::0;:::o;13971:284::-;14093:4;14110:15;14128:10;14110:28;;14149:38;14165:4;14171:7;14180:6;14149:15;:38::i;:::-;14198:27;14208:4;14214:2;14218:6;14198:9;:27::i;:::-;14243:4;14236:11;;;13971:284;;;;;:::o;9635:35::-;;;;;;;;;;;;;:::o;9925:22::-;;;;:::o;18615:391::-;1802:13;:11;:13::i;:::-;18888:6:::1;18856:11;;18822:14;;18788;;18758:10;;18722:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;18700:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;18985:13;18966:16;:32;;;;18615:391:::0;:::o;19014:379::-;1802:13;:11;:13::i;:::-;19281:6:::1;19249:11;;19215:14;;19181;;19151:10;;19115:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;19093:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;19372:13;19359:10;:26;;;;19014:379:::0;:::o;17483:183::-;1802:13;:11;:13::i;:::-;17581:1:::1;17563:20;;:6;:20;;::::0;17555:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17652:6;17636:13;;:22;;;;;;;;;;;;;;;;;;17483:183:::0;:::o;13424:91::-;13473:5;9204:2;13491:16;;13424:91;:::o;9897:21::-;;;;:::o;10070:37::-;;;;:::o;10417:::-;;;:::o;17249:226::-;1802:13;:11;:13::i;:::-;17363:1:::1;17345:20;;:6;:20;;::::0;17323:109:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17461:6;17443:15;;:24;;;;;;;;;;;;;;;;;;17249:226:::0;:::o;19401:387::-;1802:13;:11;:13::i;:::-;19672:6:::1;19640:11;;19606:14;;19572;;19542:10;;19506:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;19484:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;19767:13;19750:14;:30;;;;19401:387:::0;:::o;17080:161::-;1802:13;:11;:13::i;:::-;17225:8:::1;17195:18;:27;17214:7;17195:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17080:161:::0;;:::o;10243:67::-;;;;:::o;10491:30::-;;;;;;;;;;;;;:::o;13630:118::-;13695:7;13722:9;:18;13732:7;13722:18;;;;;;;;;;;;;;;;13715:25;;13630:118;;;:::o;2564:103::-;1802:13;:11;:13::i;:::-;2629:30:::1;2656:1;2629:18;:30::i;:::-;2564:103::o:0;9725:30::-;;;;;;;;;;;;;:::o;9543:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9793:28::-;;;;;;;;;;;;;:::o;1916:87::-;1962:7;1989:6;;;;;;;;;;;1982:13;;1916:87;:::o;9762:24::-;;;;;;;;;;;;;:::o;13321:95::-;13368:13;13401:7;;;;;;;;;;;;;;;;;13394:14;;13321:95;:::o;16631:303::-;1802:13;:11;:13::i;:::-;16777:12:::1;16769:20;;:4;:20;;::::0;16747:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16885:41;16914:4;16920:5;16885:28;:41::i;:::-;16631:303:::0;;:::o;17674:183::-;1802:13;:11;:13::i;:::-;17772:1:::1;17754:20;;:6;:20;;::::0;17746:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17843:6;17827:13;;:22;;;;;;;;;;;;;;;;;;17674:183:::0;:::o;9828:28::-;;;;;;;;;;;;;:::o;13756:207::-;13851:4;13868:13;13884:10;13868:26;;13905:28;13915:5;13922:2;13926:6;13905:9;:28::i;:::-;13951:4;13944:11;;;13756:207;;;;:::o;9677:39::-;;;;;;;;;;;;;:::o;9479:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16124:499::-;1802:13;:11;:13::i;:::-;16241::::1;16257:7;:5;:7::i;:::-;16241:23;;16305:9;16300:305;16324:6;;:13;;16320:1;:17;16300:305;;;16363:12;16378:6;;16385:1;16378:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16363:24;;16452:1;16436:18;;:4;:18;;::::0;16406:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16552:37;16568:5;16575:4;16581:7;16552:15;:37::i;:::-;16344:261;16339:3;;;;;;;16300:305;;;;16230:393;16124:499:::0;;;:::o;18226:381::-;1802:13;:11;:13::i;:::-;18494:6:::1;18462:11;;18428:14;;18394;;18364:10;;18328:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;18306:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;18586:13;18572:11;:27;;;;18226:381:::0;:::o;23457:123::-;1802:13;:11;:13::i;:::-;23529:10:::1;23521:28;;:51;23550:21;23521:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23457:123::o:0;9956:39::-;;;;:::o;14263:167::-;14368:7;14395:11;:18;14407:5;14395:18;;;;;;;;;;;;;;;:27;14414:7;14395:27;;;;;;;;;;;;;;;;14388:34;;14263:167;;;;:::o;22900:549::-;1802:13;:11;:13::i;:::-;23077:4:::1;23052:30;;:13;:30;;::::0;23030:134:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23177:21;23208:13;23201:31;;;23241:4;23201:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23177:70;;23260:20;23311:6;23300:7;23284:13;:23;;;;:::i;:::-;23283:34;;;;:::i;:::-;23260:57;;23330:9;23349:13;23342:30;;;23373:10;23385:12;23342:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23330:68;;23417:4;23409:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;23019:430;;;22900:549:::0;;:::o;2822:238::-;1802:13;:11;:13::i;:::-;2945:1:::1;2925:22;;:8;:22;;::::0;2903:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3024:28;3043:8;3024:18;:28::i;:::-;2822:238:::0;:::o;9293:24::-;;;;:::o;10016:33::-;;;;:::o;10128:37::-;;;;:::o;2081:132::-;2156:12;:10;:12::i;:::-;2145:23;;:7;:5;:7::i;:::-;:23;;;2137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2081:132::o;14596:376::-;14743:1;14725:20;;:6;:20;;;14717:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14824:1;14805:21;;:7;:21;;;14797:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14909:6;14878:11;:19;14890:6;14878:19;;;;;;;;;;;;;;;:28;14898:7;14878:28;;;;;;;;;;;;;;;:37;;;;14948:7;14931:33;;14940:6;14931:33;;;14957:6;14931:33;;;;;;:::i;:::-;;;;;;;;14596:376;;;:::o;14980:502::-;15115:24;15142:25;15152:5;15159:7;15142:9;:25::i;:::-;15115:52;;15202:17;15182:16;:37;15178:297;;15282:6;15262:16;:26;;15236:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15397:51;15406:5;15413:7;15441:6;15422:16;:25;15397:8;:51::i;:::-;15178:297;15104:378;14980:502;;;:::o;25912:2765::-;26062:1;26044:20;;:6;:20;;;26036:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26146:1;26125:23;;:9;:23;;;26117:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26216:1;26207:6;:10;26199:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26355:7;:5;:7::i;:::-;26345:17;;:6;:17;;;:41;;;;26379:7;:5;:7::i;:::-;26366:20;;:9;:20;;;26345:41;:68;;;;26408:4;26390:23;;:6;:23;;;26345:68;26327:381;;;26458:1;26444:10;;:15;:44;;;;;26476:12;26463:25;;:9;:25;;;26444:44;26440:179;;;26522:15;26509:10;:28;;;;26556:12;:10;:12::i;:::-;26587:16;:14;:16::i;:::-;26440:179;26633:42;26649:6;26657:9;26668:6;26633:15;:42::i;:::-;26690:7;;26327:381;26720:12;:10;:12::i;:::-;26743:16;:14;:16::i;:::-;26772:10;26795:12;26785:22;;:6;:22;;;26772:35;;26818:11;26845:12;26832:25;;:9;:25;;;26818:39;;26870:14;26895:15;26923:28;26954:24;26972:4;26954:9;:24::i;:::-;26923:55;;26989:12;27028:13;;27004:20;:37;;26989:52;;27072:7;:35;;;;;27096:11;;;;;;;;;;;27072:35;:61;;;;;27125:8;;;;;;;;;;;27124:9;27072:61;:112;;;;;27151:25;:33;27177:6;27151:33;;;;;;;;;;;;;;;;;;;;;;;;;27150:34;27072:112;:156;;;;;27202:18;:26;27221:6;27202:26;;;;;;;;;;;;;;;;;;;;;;;;;27201:27;27072:156;:203;;;;;27246:18;:29;27265:9;27246:29;;;;;;;;;;;;;;;;;;;;;;;;;27245:30;27072:203;27054:333;;;27313:4;27302:8;;:15;;;;;;;;;;;;;;;;;;27332:12;:10;:12::i;:::-;27370:5;27359:8;;:16;;;;;;;;;;;;;;;;;;27054:333;27399:12;27415:8;;;;;;;;;;;27414:9;27399:24;;27440:18;:26;27459:6;27440:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;27470:18;:29;27489:9;27470:29;;;;;;;;;;;;;;;;;;;;;;;;;27440:59;27436:107;;;27526:5;27516:15;;27436:107;27555:12;27588:7;27584:1033;;;27616:25;:33;27642:6;27616:33;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;27653:5;27616:42;27612:965;;;27684:18;:29;27703:9;27684:29;;;;;;;;;;;;;;;;;;;;;;;;;27679:371;;27805:9;;27795:6;27772:20;27782:9;27772;:20::i;:::-;:29;;;;:::i;:::-;:42;;27738:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;27932:29;27946:6;27954;;27932:13;:29::i;:::-;27923:38;;27984:46;28000:6;28016:4;28023:6;27984:15;:46::i;:::-;27679:371;28075:6;28068:13;;27612:965;;;28107:25;:36;28133:9;28107:36;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;28147:6;28107:46;28103:474;;;28179:18;:26;28198:6;28179:26;;;;;;;;;;;;;;;;;;;;;;;;;28174:355;;28274:9;;28264:6;:19;;28230:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;28409:30;28423:6;28431:7;;28409:13;:30::i;:::-;28399:40;;28462:47;28478:6;28494:4;28501:7;28462:15;:47::i;:::-;28174:355;28554:7;28547:14;;28103:474;27612:965;28601:4;28591:14;;;;;:::i;:::-;;;27584:1033;28627:42;28643:6;28651:9;28662:6;28627:15;:42::i;:::-;26025:2652;;;;;;;;25912:2765;;;;:::o;3220:191::-;3294:16;3313:6;;;;;;;;;;;3294:25;;3339:8;3330:6;;:17;;;;;;;;;;;;;;;;;;3394:8;3363:40;;3384:8;3363:40;;;;;;;;;;;;3283:128;3220:191;:::o;16942:130::-;17059:5;17025:25;:31;17051:4;17025:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16942:130;;:::o;15490:626::-;15619:19;15641:9;:15;15651:4;15641:15;;;;;;;;;;;;;;;;15619:37;;15704:6;15689:11;:21;;15667:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15844:6;15830:11;:20;15812:9;:15;15822:4;15812:15;;;;;;;;;;;;;;;:38;;;;16047:6;16030:9;:13;16040:2;16030:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16097:2;16082:26;;16091:4;16082:26;;;16101:6;16082:26;;;;;;:::i;:::-;;;;;;;;15608:508;15490:626;;;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;20467:1398::-;20564:16;;;;;;;;;;;:64;;;;;20616:12;20603:10;;:25;;;;:::i;:::-;20584:15;:44;;20564:64;20560:1298;;;20681:9;20668:10;;:22;;;;:::i;:::-;20649:15;:41;20645:1047;;20720:4;20711:6;:13;;;;20753:4;20743:7;:14;;;;20645:1047;;;20832:9;20819:10;;:22;;;;:::i;:::-;20801:15;:40;:103;;;;;20894:10;20881;;:23;;;;:::i;:::-;20862:15;:42;;20801:103;20779:913;;;20948:4;20939:6;:13;;;;20981:4;20971:7;:14;;;;20779:913;;;21060:10;21047;;:23;;;;:::i;:::-;21029:15;:41;:104;;;;;21123:10;21110;;:23;;;;:::i;:::-;21091:15;:42;;21029:104;21007:685;;;21177:4;21168:6;:13;;;;21210:4;21200:7;:14;;;;21007:685;;;21289:10;21276;;:23;;;;:::i;:::-;21258:15;:41;:105;;;;;21352:11;21339:10;;:24;;;;:::i;:::-;21320:15;:43;;21258:105;21236:456;;;21407:4;21398:6;:13;;;;21440:4;21430:7;:14;;;;21236:456;;;21519:11;21506:10;;:24;;;;:::i;:::-;21488:15;:42;:107;;;;;21583:12;21570:10;;:25;;;;:::i;:::-;21551:15;:44;;21488:107;21466:226;;;21639:4;21630:6;:13;;;;21672:4;21662:7;:14;;;;21466:226;21236:456;21007:685;20779:913;20645:1047;20560:1298;;;21713:16;;;;;;;;;;;:35;;;;;21747:1;21733:10;;:15;;21713:35;21709:149;;;21774:4;21765:6;:13;;;;21803:4;21793:7;:14;;;;21841:5;21822:16;;:24;;;;;;;;;;;;;;;;;;21709:149;20560:1298;20467:1398::o;21873:950::-;21990:20;;;;;;;;;;;:66;;;;;22046:10;22033;;:23;;;;:::i;:::-;22014:15;:42;;21990:66;21972:844;;;22119:10;22106;;:23;;;;:::i;:::-;22087:15;:42;22083:576;;22186:6;22179:3;22163:13;:11;:13::i;:::-;:19;;;;:::i;:::-;22162:30;;;;:::i;:::-;22150:9;:42;;;;22083:576;;;22267:10;22254;;:23;;;;:::i;:::-;22236:15;:41;:104;;;;;22330:10;22317;;:23;;;;:::i;:::-;22298:15;:42;;22236:104;22214:445;;;22411:6;22404:3;22388:13;:11;:13::i;:::-;:19;;;;:::i;:::-;22387:30;;;;:::i;:::-;22375:9;:42;;;;22214:445;;;22492:10;22479;;:23;;;;:::i;:::-;22461:15;:41;:104;;;;;22555:10;22542;;:23;;;;:::i;:::-;22523:15;:42;;22461:104;22439:220;;;22637:6;22629:4;22613:13;:11;:13::i;:::-;:20;;;;:::i;:::-;22612:31;;;;:::i;:::-;22600:9;:43;;;;22439:220;22214:445;22083:576;21972:844;;;22680:20;;;;;;;;;;;:39;;;;;22718:1;22704:10;;:15;;22680:39;22676:140;;;22748:13;:11;:13::i;:::-;22736:9;:25;;;;22799:5;22776:20;;:28;;;;;;;;;;;;;;;;;;22676:140;21972:844;21873:950::o;24185:1192::-;24227:28;24258:24;24276:4;24258:9;:24::i;:::-;24227:55;;24295:22;24320:21;24295:46;;24354:38;24371:20;24354:16;:38::i;:::-;24405:18;24451:14;24426:21;:40;;;;:::i;:::-;24405:61;;24479:23;24539:6;24519:16;;24506:10;:29;;;;:::i;:::-;24505:40;;;;:::i;:::-;24479:66;;24556:17;24604:6;24590:10;;24577;:23;;;;:::i;:::-;24576:34;;;;:::i;:::-;24556:54;;24621:21;24677:6;24659:14;;24646:10;:27;;;;:::i;:::-;24645:38;;;;:::i;:::-;24621:62;;24694:21;24750:6;24732:14;;24719:10;:27;;;;:::i;:::-;24718:38;;;;:::i;:::-;24694:62;;24767:18;24817:6;24802:11;;24789:10;:24;;;;:::i;:::-;24788:35;;;;:::i;:::-;24767:56;;24836:12;24859:13;24883;24907;24931;24971:15;;;;;;;;;;;:20;;24999:15;25021:5;24971:84;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24957:98;;;;;25081:9;;;;;;;;;;;:14;;25103:9;25119:5;25081:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25066:63;;;;;25155:13;;;;;;;;;;;:18;;25181:13;25201:5;25155:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25140:71;;;;;25237:13;;;;;;;;;;;:18;;25263:13;25283:5;25237:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25222:71;;;;;25319:10;;;;;;;;;;;:15;;25342:10;25359:5;25319:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25304:65;;;;;24216:1161;;;;;;;;;;;;;24185:1192::o;28685:182::-;28795:7;28852:6;28833:13;28823:6;:24;;;;:::i;:::-;28822:37;;;;:::i;:::-;28815:44;;28685:182;;;;:::o;23588:589::-;23714:21;23752:1;23738:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23714:40;;23783:4;23765;23770:1;23765:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23809:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23799:4;23804:1;23799:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23844:62;23861:4;23876:15;23894:11;23844:8;:62::i;:::-;23945:15;:66;;;24026:11;24052:1;24096:4;24123;24143:15;23945:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23643:534;23588:589;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2451:117::-;2560:1;2557;2550:12;2574:117;2683:1;2680;2673:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:329::-;3029:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:119;;;3084:79;;:::i;:::-;3046:119;3204:1;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;:::i;:::-;3219:63;;3175:117;2970:329;;;;:::o;3305:122::-;3378:24;3396:5;3378:24;:::i;:::-;3371:5;3368:35;3358:63;;3417:1;3414;3407:12;3358:63;3305:122;:::o;3433:139::-;3479:5;3517:6;3504:20;3495:29;;3533:33;3560:5;3533:33;:::i;:::-;3433:139;;;;:::o;3578:474::-;3646:6;3654;3703:2;3691:9;3682:7;3678:23;3674:32;3671:119;;;3709:79;;:::i;:::-;3671:119;3829:1;3854:53;3899:7;3890:6;3879:9;3875:22;3854:53;:::i;:::-;3844:63;;3800:117;3956:2;3982:53;4027:7;4018:6;4007:9;4003:22;3982:53;:::i;:::-;3972:63;;3927:118;3578:474;;;;;:::o;4058:90::-;4092:7;4135:5;4128:13;4121:21;4110:32;;4058:90;;;:::o;4154:109::-;4235:21;4250:5;4235:21;:::i;:::-;4230:3;4223:34;4154:109;;:::o;4269:210::-;4356:4;4394:2;4383:9;4379:18;4371:26;;4407:65;4469:1;4458:9;4454:17;4445:6;4407:65;:::i;:::-;4269:210;;;;:::o;4485:60::-;4513:3;4534:5;4527:12;;4485:60;;;:::o;4551:142::-;4601:9;4634:53;4652:34;4661:24;4679:5;4661:24;:::i;:::-;4652:34;:::i;:::-;4634:53;:::i;:::-;4621:66;;4551:142;;;:::o;4699:126::-;4749:9;4782:37;4813:5;4782:37;:::i;:::-;4769:50;;4699:126;;;:::o;4831:152::-;4907:9;4940:37;4971:5;4940:37;:::i;:::-;4927:50;;4831:152;;;:::o;4989:183::-;5102:63;5159:5;5102:63;:::i;:::-;5097:3;5090:76;4989:183;;:::o;5178:274::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:97;5442:1;5431:9;5427:17;5418:6;5348:97;:::i;:::-;5178:274;;;;:::o;5458:329::-;5517:6;5566:2;5554:9;5545:7;5541:23;5537:32;5534:119;;;5572:79;;:::i;:::-;5534:119;5692:1;5717:53;5762:7;5753:6;5742:9;5738:22;5717:53;:::i;:::-;5707:63;;5663:117;5458:329;;;;:::o;5793:619::-;5870:6;5878;5886;5935:2;5923:9;5914:7;5910:23;5906:32;5903:119;;;5941:79;;:::i;:::-;5903:119;6061:1;6086:53;6131:7;6122:6;6111:9;6107:22;6086:53;:::i;:::-;6076:63;;6032:117;6188:2;6214:53;6259:7;6250:6;6239:9;6235:22;6214:53;:::i;:::-;6204:63;;6159:118;6316:2;6342:53;6387:7;6378:6;6367:9;6363:22;6342:53;:::i;:::-;6332:63;;6287:118;5793:619;;;;;:::o;6418:86::-;6453:7;6493:4;6486:5;6482:16;6471:27;;6418:86;;;:::o;6510:112::-;6593:22;6609:5;6593:22;:::i;:::-;6588:3;6581:35;6510:112;;:::o;6628:214::-;6717:4;6755:2;6744:9;6740:18;6732:26;;6768:67;6832:1;6821:9;6817:17;6808:6;6768:67;:::i;:::-;6628:214;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:117::-;7692:1;7689;7682:12;7706:117;7815:1;7812;7805:12;7829:117;7938:1;7935;7928:12;7969:568;8042:8;8052:6;8102:3;8095:4;8087:6;8083:17;8079:27;8069:122;;8110:79;;:::i;:::-;8069:122;8223:6;8210:20;8200:30;;8253:18;8245:6;8242:30;8239:117;;;8275:79;;:::i;:::-;8239:117;8389:4;8381:6;8377:17;8365:29;;8443:3;8435:4;8427:6;8423:17;8413:8;8409:32;8406:41;8403:128;;;8450:79;;:::i;:::-;8403:128;7969:568;;;;;:::o;8543:704::-;8638:6;8646;8654;8703:2;8691:9;8682:7;8678:23;8674:32;8671:119;;;8709:79;;:::i;:::-;8671:119;8857:1;8846:9;8842:17;8829:31;8887:18;8879:6;8876:30;8873:117;;;8909:79;;:::i;:::-;8873:117;9022:80;9094:7;9085:6;9074:9;9070:22;9022:80;:::i;:::-;9004:98;;;;8800:312;9151:2;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9122:118;8543:704;;;;;:::o;9253:474::-;9321:6;9329;9378:2;9366:9;9357:7;9353:23;9349:32;9346:119;;;9384:79;;:::i;:::-;9346:119;9504:1;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9475:117;9631:2;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9602:118;9253:474;;;;;:::o;9733:180::-;9781:77;9778:1;9771:88;9878:4;9875:1;9868:15;9902:4;9899:1;9892:15;9919:410;9959:7;9982:20;10000:1;9982:20;:::i;:::-;9977:25;;10016:20;10034:1;10016:20;:::i;:::-;10011:25;;10071:1;10068;10064:9;10093:30;10111:11;10093:30;:::i;:::-;10082:41;;10272:1;10263:7;10259:15;10256:1;10253:22;10233:1;10226:9;10206:83;10183:139;;10302:18;;:::i;:::-;10183:139;9967:362;9919:410;;;;:::o;10335:180::-;10383:77;10380:1;10373:88;10480:4;10477:1;10470:15;10504:4;10501:1;10494:15;10521:185;10561:1;10578:20;10596:1;10578:20;:::i;:::-;10573:25;;10612:20;10630:1;10612:20;:::i;:::-;10607:25;;10651:1;10641:35;;10656:18;;:::i;:::-;10641:35;10698:1;10695;10691:9;10686:14;;10521:185;;;;:::o;10712:239::-;10852:34;10848:1;10840:6;10836:14;10829:58;10921:22;10916:2;10908:6;10904:15;10897:47;10712:239;:::o;10957:366::-;11099:3;11120:67;11184:2;11179:3;11120:67;:::i;:::-;11113:74;;11196:93;11285:3;11196:93;:::i;:::-;11314:2;11309:3;11305:12;11298:19;;10957:366;;;:::o;11329:419::-;11495:4;11533:2;11522:9;11518:18;11510:26;;11582:9;11576:4;11572:20;11568:1;11557:9;11553:17;11546:47;11610:131;11736:4;11610:131;:::i;:::-;11602:139;;11329:419;;;:::o;11754:191::-;11794:3;11813:20;11831:1;11813:20;:::i;:::-;11808:25;;11847:20;11865:1;11847:20;:::i;:::-;11842:25;;11890:1;11887;11883:9;11876:16;;11911:3;11908:1;11905:10;11902:36;;;11918:18;;:::i;:::-;11902:36;11754:191;;;;:::o;11951:220::-;12091:34;12087:1;12079:6;12075:14;12068:58;12160:3;12155:2;12147:6;12143:15;12136:28;11951:220;:::o;12177:366::-;12319:3;12340:67;12404:2;12399:3;12340:67;:::i;:::-;12333:74;;12416:93;12505:3;12416:93;:::i;:::-;12534:2;12529:3;12525:12;12518:19;;12177:366;;;:::o;12549:419::-;12715:4;12753:2;12742:9;12738:18;12730:26;;12802:9;12796:4;12792:20;12788:1;12777:9;12773:17;12766:47;12830:131;12956:4;12830:131;:::i;:::-;12822:139;;12549:419;;;:::o;12974:221::-;13114:34;13110:1;13102:6;13098:14;13091:58;13183:4;13178:2;13170:6;13166:15;13159:29;12974:221;:::o;13201:366::-;13343:3;13364:67;13428:2;13423:3;13364:67;:::i;:::-;13357:74;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13201:366;;;:::o;13573:419::-;13739:4;13777:2;13766:9;13762:18;13754:26;;13826:9;13820:4;13816:20;13812:1;13801:9;13797:17;13790:47;13854:131;13980:4;13854:131;:::i;:::-;13846:139;;13573:419;;;:::o;13998:220::-;14138:34;14134:1;14126:6;14122:14;14115:58;14207:3;14202:2;14194:6;14190:15;14183:28;13998:220;:::o;14224:366::-;14366:3;14387:67;14451:2;14446:3;14387:67;:::i;:::-;14380:74;;14463:93;14552:3;14463:93;:::i;:::-;14581:2;14576:3;14572:12;14565:19;;14224:366;;;:::o;14596:419::-;14762:4;14800:2;14789:9;14785:18;14777:26;;14849:9;14843:4;14839:20;14835:1;14824:9;14820:17;14813:47;14877:131;15003:4;14877:131;:::i;:::-;14869:139;;14596:419;;;:::o;15021:224::-;15161:34;15157:1;15149:6;15145:14;15138:58;15230:7;15225:2;15217:6;15213:15;15206:32;15021:224;:::o;15251:366::-;15393:3;15414:67;15478:2;15473:3;15414:67;:::i;:::-;15407:74;;15490:93;15579:3;15490:93;:::i;:::-;15608:2;15603:3;15599:12;15592:19;;15251:366;;;:::o;15623:419::-;15789:4;15827:2;15816:9;15812:18;15804:26;;15876:9;15870:4;15866:20;15862:1;15851:9;15847:17;15840:47;15904:131;16030:4;15904:131;:::i;:::-;15896:139;;15623:419;;;:::o;16048:226::-;16188:34;16184:1;16176:6;16172:14;16165:58;16257:9;16252:2;16244:6;16240:15;16233:34;16048:226;:::o;16280:366::-;16422:3;16443:67;16507:2;16502:3;16443:67;:::i;:::-;16436:74;;16519:93;16608:3;16519:93;:::i;:::-;16637:2;16632:3;16628:12;16621:19;;16280:366;;;:::o;16652:419::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16905:9;16899:4;16895:20;16891:1;16880:9;16876:17;16869:47;16933:131;17059:4;16933:131;:::i;:::-;16925:139;;16652:419;;;:::o;17077:244::-;17217:34;17213:1;17205:6;17201:14;17194:58;17286:27;17281:2;17273:6;17269:15;17262:52;17077:244;:::o;17327:366::-;17469:3;17490:67;17554:2;17549:3;17490:67;:::i;:::-;17483:74;;17566:93;17655:3;17566:93;:::i;:::-;17684:2;17679:3;17675:12;17668:19;;17327:366;;;:::o;17699:419::-;17865:4;17903:2;17892:9;17888:18;17880:26;;17952:9;17946:4;17942:20;17938:1;17927:9;17923:17;17916:47;17980:131;18106:4;17980:131;:::i;:::-;17972:139;;17699:419;;;:::o;18124:224::-;18264:34;18260:1;18252:6;18248:14;18241:58;18333:7;18328:2;18320:6;18316:15;18309:32;18124:224;:::o;18354:366::-;18496:3;18517:67;18581:2;18576:3;18517:67;:::i;:::-;18510:74;;18593:93;18682:3;18593:93;:::i;:::-;18711:2;18706:3;18702:12;18695:19;;18354:366;;;:::o;18726:419::-;18892:4;18930:2;18919:9;18915:18;18907:26;;18979:9;18973:4;18969:20;18965:1;18954:9;18950:17;18943:47;19007:131;19133:4;19007:131;:::i;:::-;18999:139;;18726:419;;;:::o;19151:180::-;19199:77;19196:1;19189:88;19296:4;19293:1;19286:15;19320:4;19317:1;19310:15;19337:222;19477:34;19473:1;19465:6;19461:14;19454:58;19546:5;19541:2;19533:6;19529:15;19522:30;19337:222;:::o;19565:366::-;19707:3;19728:67;19792:2;19787:3;19728:67;:::i;:::-;19721:74;;19804:93;19893:3;19804:93;:::i;:::-;19922:2;19917:3;19913:12;19906:19;;19565:366;;;:::o;19937:419::-;20103:4;20141:2;20130:9;20126:18;20118:26;;20190:9;20184:4;20180:20;20176:1;20165:9;20161:17;20154:47;20218:131;20344:4;20218:131;:::i;:::-;20210:139;;19937:419;;;:::o;20362:241::-;20502:34;20498:1;20490:6;20486:14;20479:58;20571:24;20566:2;20558:6;20554:15;20547:49;20362:241;:::o;20609:366::-;20751:3;20772:67;20836:2;20831:3;20772:67;:::i;:::-;20765:74;;20848:93;20937:3;20848:93;:::i;:::-;20966:2;20961:3;20957:12;20950:19;;20609:366;;;:::o;20981:419::-;21147:4;21185:2;21174:9;21170:18;21162:26;;21234:9;21228:4;21224:20;21220:1;21209:9;21205:17;21198:47;21262:131;21388:4;21262:131;:::i;:::-;21254:139;;20981:419;;;:::o;21406:143::-;21463:5;21494:6;21488:13;21479:22;;21510:33;21537:5;21510:33;:::i;:::-;21406:143;;;;:::o;21555:351::-;21625:6;21674:2;21662:9;21653:7;21649:23;21645:32;21642:119;;;21680:79;;:::i;:::-;21642:119;21800:1;21825:64;21881:7;21872:6;21861:9;21857:22;21825:64;:::i;:::-;21815:74;;21771:128;21555:351;;;;:::o;21912:332::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22084:71;22152:1;22141:9;22137:17;22128:6;22084:71;:::i;:::-;22165:72;22233:2;22222:9;22218:18;22209:6;22165:72;:::i;:::-;21912:332;;;;;:::o;22250:137::-;22304:5;22335:6;22329:13;22320:22;;22351:30;22375:5;22351:30;:::i;:::-;22250:137;;;;:::o;22393:345::-;22460:6;22509:2;22497:9;22488:7;22484:23;22480:32;22477:119;;;22515:79;;:::i;:::-;22477:119;22635:1;22660:61;22713:7;22704:6;22693:9;22689:22;22660:61;:::i;:::-;22650:71;;22606:125;22393:345;;;;:::o;22744:165::-;22884:17;22880:1;22872:6;22868:14;22861:41;22744:165;:::o;22915:366::-;23057:3;23078:67;23142:2;23137:3;23078:67;:::i;:::-;23071:74;;23154:93;23243:3;23154:93;:::i;:::-;23272:2;23267:3;23263:12;23256:19;;22915:366;;;:::o;23287:419::-;23453:4;23491:2;23480:9;23476:18;23468:26;;23540:9;23534:4;23530:20;23526:1;23515:9;23511:17;23504:47;23568:131;23694:4;23568:131;:::i;:::-;23560:139;;23287:419;;;:::o;23712:225::-;23852:34;23848:1;23840:6;23836:14;23829:58;23921:8;23916:2;23908:6;23904:15;23897:33;23712:225;:::o;23943:366::-;24085:3;24106:67;24170:2;24165:3;24106:67;:::i;:::-;24099:74;;24182:93;24271:3;24182:93;:::i;:::-;24300:2;24295:3;24291:12;24284:19;;23943:366;;;:::o;24315:419::-;24481:4;24519:2;24508:9;24504:18;24496:26;;24568:9;24562:4;24558:20;24554:1;24543:9;24539:17;24532:47;24596:131;24722:4;24596:131;:::i;:::-;24588:139;;24315:419;;;:::o;24740:182::-;24880:34;24876:1;24868:6;24864:14;24857:58;24740:182;:::o;24928:366::-;25070:3;25091:67;25155:2;25150:3;25091:67;:::i;:::-;25084:74;;25167:93;25256:3;25167:93;:::i;:::-;25285:2;25280:3;25276:12;25269:19;;24928:366;;;:::o;25300:419::-;25466:4;25504:2;25493:9;25489:18;25481:26;;25553:9;25547:4;25543:20;25539:1;25528:9;25524:17;25517:47;25581:131;25707:4;25581:131;:::i;:::-;25573:139;;25300:419;;;:::o;25725:223::-;25865:34;25861:1;25853:6;25849:14;25842:58;25934:6;25929:2;25921:6;25917:15;25910:31;25725:223;:::o;25954:366::-;26096:3;26117:67;26181:2;26176:3;26117:67;:::i;:::-;26110:74;;26193:93;26282:3;26193:93;:::i;:::-;26311:2;26306:3;26302:12;26295:19;;25954:366;;;:::o;26326:419::-;26492:4;26530:2;26519:9;26515:18;26507:26;;26579:9;26573:4;26569:20;26565:1;26554:9;26550:17;26543:47;26607:131;26733:4;26607:131;:::i;:::-;26599:139;;26326:419;;;:::o;26751:221::-;26891:34;26887:1;26879:6;26875:14;26868:58;26960:4;26955:2;26947:6;26943:15;26936:29;26751:221;:::o;26978:366::-;27120:3;27141:67;27205:2;27200:3;27141:67;:::i;:::-;27134:74;;27217:93;27306:3;27217:93;:::i;:::-;27335:2;27330:3;27326:12;27319:19;;26978:366;;;:::o;27350:419::-;27516:4;27554:2;27543:9;27539:18;27531:26;;27603:9;27597:4;27593:20;27589:1;27578:9;27574:17;27567:47;27631:131;27757:4;27631:131;:::i;:::-;27623:139;;27350:419;;;:::o;27775:179::-;27915:31;27911:1;27903:6;27899:14;27892:55;27775:179;:::o;27960:366::-;28102:3;28123:67;28187:2;28182:3;28123:67;:::i;:::-;28116:74;;28199:93;28288:3;28199:93;:::i;:::-;28317:2;28312:3;28308:12;28301:19;;27960:366;;;:::o;28332:419::-;28498:4;28536:2;28525:9;28521:18;28513:26;;28585:9;28579:4;28575:20;28571:1;28560:9;28556:17;28549:47;28613:131;28739:4;28613:131;:::i;:::-;28605:139;;28332:419;;;:::o;28757:224::-;28897:34;28893:1;28885:6;28881:14;28874:58;28966:7;28961:2;28953:6;28949:15;28942:32;28757:224;:::o;28987:366::-;29129:3;29150:67;29214:2;29209:3;29150:67;:::i;:::-;29143:74;;29226:93;29315:3;29226:93;:::i;:::-;29344:2;29339:3;29335:12;29328:19;;28987:366;;;:::o;29359:419::-;29525:4;29563:2;29552:9;29548:18;29540:26;;29612:9;29606:4;29602:20;29598:1;29587:9;29583:17;29576:47;29640:131;29766:4;29640:131;:::i;:::-;29632:139;;29359:419;;;:::o;29784:228::-;29924:34;29920:1;29912:6;29908:14;29901:58;29993:11;29988:2;29980:6;29976:15;29969:36;29784:228;:::o;30018:366::-;30160:3;30181:67;30245:2;30240:3;30181:67;:::i;:::-;30174:74;;30257:93;30346:3;30257:93;:::i;:::-;30375:2;30370:3;30366:12;30359:19;;30018:366;;;:::o;30390:419::-;30556:4;30594:2;30583:9;30579:18;30571:26;;30643:9;30637:4;30633:20;30629:1;30618:9;30614:17;30607:47;30671:131;30797:4;30671:131;:::i;:::-;30663:139;;30390:419;;;:::o;30815:221::-;30955:34;30951:1;30943:6;30939:14;30932:58;31024:4;31019:2;31011:6;31007:15;31000:29;30815:221;:::o;31042:366::-;31184:3;31205:67;31269:2;31264:3;31205:67;:::i;:::-;31198:74;;31281:93;31370:3;31281:93;:::i;:::-;31399:2;31394:3;31390:12;31383:19;;31042:366;;;:::o;31414:419::-;31580:4;31618:2;31607:9;31603:18;31595:26;;31667:9;31661:4;31657:20;31653:1;31642:9;31638:17;31631:47;31695:131;31821:4;31695:131;:::i;:::-;31687:139;;31414:419;;;:::o;31839:228::-;31979:34;31975:1;31967:6;31963:14;31956:58;32048:11;32043:2;32035:6;32031:15;32024:36;31839:228;:::o;32073:366::-;32215:3;32236:67;32300:2;32295:3;32236:67;:::i;:::-;32229:74;;32312:93;32401:3;32312:93;:::i;:::-;32430:2;32425:3;32421:12;32414:19;;32073:366;;;:::o;32445:419::-;32611:4;32649:2;32638:9;32634:18;32626:26;;32698:9;32692:4;32688:20;32684:1;32673:9;32669:17;32662:47;32726:131;32852:4;32726:131;:::i;:::-;32718:139;;32445:419;;;:::o;32870:194::-;32910:4;32930:20;32948:1;32930:20;:::i;:::-;32925:25;;32964:20;32982:1;32964:20;:::i;:::-;32959:25;;33008:1;33005;33001:9;32993:17;;33032:1;33026:4;33023:11;33020:37;;;33037:18;;:::i;:::-;33020:37;32870:194;;;;:::o;33070:225::-;33210:34;33206:1;33198:6;33194:14;33187:58;33279:8;33274:2;33266:6;33262:15;33255:33;33070:225;:::o;33301:366::-;33443:3;33464:67;33528:2;33523:3;33464:67;:::i;:::-;33457:74;;33540:93;33629:3;33540:93;:::i;:::-;33658:2;33653:3;33649:12;33642:19;;33301:366;;;:::o;33673:419::-;33839:4;33877:2;33866:9;33862:18;33854:26;;33926:9;33920:4;33916:20;33912:1;33901:9;33897:17;33890:47;33954:131;34080:4;33954:131;:::i;:::-;33946:139;;33673:419;;;:::o;34098:147::-;34199:11;34236:3;34221:18;;34098:147;;;;:::o;34251:114::-;;:::o;34371:398::-;34530:3;34551:83;34632:1;34627:3;34551:83;:::i;:::-;34544:90;;34643:93;34732:3;34643:93;:::i;:::-;34761:1;34756:3;34752:11;34745:18;;34371:398;;;:::o;34775:379::-;34959:3;34981:147;35124:3;34981:147;:::i;:::-;34974:154;;35145:3;35138:10;;34775:379;;;:::o;35160:180::-;35208:77;35205:1;35198:88;35305:4;35302:1;35295:15;35329:4;35326:1;35319:15;35346:143;35403:5;35434:6;35428:13;35419:22;;35450:33;35477:5;35450:33;:::i;:::-;35346:143;;;;:::o;35495:351::-;35565:6;35614:2;35602:9;35593:7;35589:23;35585:32;35582:119;;;35620:79;;:::i;:::-;35582:119;35740:1;35765:64;35821:7;35812:6;35801:9;35797:22;35765:64;:::i;:::-;35755:74;;35711:128;35495:351;;;;:::o;35852:85::-;35897:7;35926:5;35915:16;;35852:85;;;:::o;35943:158::-;36001:9;36034:61;36052:42;36061:32;36087:5;36061:32;:::i;:::-;36052:42;:::i;:::-;36034:61;:::i;:::-;36021:74;;35943:158;;;:::o;36107:147::-;36202:45;36241:5;36202:45;:::i;:::-;36197:3;36190:58;36107:147;;:::o;36260:114::-;36327:6;36361:5;36355:12;36345:22;;36260:114;;;:::o;36380:184::-;36479:11;36513:6;36508:3;36501:19;36553:4;36548:3;36544:14;36529:29;;36380:184;;;;:::o;36570:132::-;36637:4;36660:3;36652:11;;36690:4;36685:3;36681:14;36673:22;;36570:132;;;:::o;36708:108::-;36785:24;36803:5;36785:24;:::i;:::-;36780:3;36773:37;36708:108;;:::o;36822:179::-;36891:10;36912:46;36954:3;36946:6;36912:46;:::i;:::-;36990:4;36985:3;36981:14;36967:28;;36822:179;;;;:::o;37007:113::-;37077:4;37109;37104:3;37100:14;37092:22;;37007:113;;;:::o;37156:732::-;37275:3;37304:54;37352:5;37304:54;:::i;:::-;37374:86;37453:6;37448:3;37374:86;:::i;:::-;37367:93;;37484:56;37534:5;37484:56;:::i;:::-;37563:7;37594:1;37579:284;37604:6;37601:1;37598:13;37579:284;;;37680:6;37674:13;37707:63;37766:3;37751:13;37707:63;:::i;:::-;37700:70;;37793:60;37846:6;37793:60;:::i;:::-;37783:70;;37639:224;37626:1;37623;37619:9;37614:14;;37579:284;;;37583:14;37879:3;37872:10;;37280:608;;;37156:732;;;;:::o;37894:831::-;38157:4;38195:3;38184:9;38180:19;38172:27;;38209:71;38277:1;38266:9;38262:17;38253:6;38209:71;:::i;:::-;38290:80;38366:2;38355:9;38351:18;38342:6;38290:80;:::i;:::-;38417:9;38411:4;38407:20;38402:2;38391:9;38387:18;38380:48;38445:108;38548:4;38539:6;38445:108;:::i;:::-;38437:116;;38563:72;38631:2;38620:9;38616:18;38607:6;38563:72;:::i;:::-;38645:73;38713:3;38702:9;38698:19;38689:6;38645:73;:::i;:::-;37894:831;;;;;;;;:::o

Swarm Source

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