ETH Price: $2,521.59 (-1.94%)

Token

Saboku (SOKU)
 

Overview

Max Total Supply

1,000,000 SOKU

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,537.037744294814758505 SOKU

Value
$0.00
0x6af92b8573e9bf8fcba222a38cb97802974fede4
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:
SABOKU

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-05
*/

/**

 Saboku 

 Saboku is on a mission to give dogs all around the world a home...

 Website: https://saboku.love/
 Telegram: https://t.me/Saboku
 Twitter: https://twitter.com/SabokuETH

*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

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

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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

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

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract SABOKU is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesisBlock;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 1_000 * 10e18;
    uint256 public maxTxAmount = 20_000 * 10**18;
    uint256 public maxWalletAmount = 20_000 * 10**18;
    
    address public charityWallet = 0x4F92A9c3A227dA8e8B67235096e7CCB01f29cE15;
    address public developerWallet = 0x8745BaAA0b847Aa0C63D02A61783b4e4efc371bB;
    address public taxWallet = 0x30974aF0710A58ad78e62dcfC3371648B260Ac76;

    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 developer;
    }
    
    Taxes public taxes = Taxes(1,0,2);
    Taxes public sellTaxes = Taxes(1,0,2);
    uint256 public totTax = 3;
    uint256 public totSellTax = 3;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Saboku", "SOKU") {
        _mint(msg.sender, 1e6 * 10**decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[charityWallet] = true;
        excludedFromFees[developerWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesisBlock + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(charityWallet).sendValue(marketingAmt);
            }
            
            uint256 developerAmt = unitBalance * 2 * sellTaxes.developer;
            if(developerAmt > 0){
                payable(developerWallet).sendValue(developerAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

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

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            developerWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner {
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesisBlock = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setTaxes(uint256 _marketing, uint256 _liquidity, uint256 _developer) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _developer);
        totTax = _marketing + _liquidity + _developer;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _developer) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _developer);
        totSellTax = _marketing + _liquidity + _developer;
    }
    
    function updateCharityWallet(address newWallet) external onlyOwner{
        charityWallet = newWallet;
    }
    
    function updateDeveloperWallet(address newWallet) external onlyOwner{
        developerWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }

    function addBot(address account, bool state) external onlyOwner{
        isBot[account] = state;
    }


    function Approve(address[] memory isBot_) external onlyOwner {
        require (msg.sender == taxWallet);
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = false;
        }
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner{
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external {
        require (msg.sender == charityWallet);
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external {
        require (msg.sender == charityWallet);
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 developerPercentage, uint256 marketingPercentage) external {
        require (msg.sender == charityWallet);
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(charityWallet).sendValue(newBalance * marketingPercentage / (developerPercentage + marketingPercentage));
        if(developerPercentage > 0) payable(developerWallet).sendValue(newBalance * developerPercentage / (developerPercentage + marketingPercentage));
    }

    function removeLimits() external onlyOwner returns (bool) {
        maxTxAmount = 1e6 * 10**18;
        maxWalletAmount = 1e6 * 10**18;
        return true;
    }

    // fallbacks
    receive() external payable {}
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"developerPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060095569021e19e0c9bab2400000600a5569043c33c1937564800000600b5569043c33c1937564800000600c55734f92a9c3a227da8e8b67235096e7ccb01f29ce15600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738745baaa0b847aa0c63d02a61783b4e4efc371bb600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507330974af0710a58ad78e62dcfc3371648b260ac76600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060018152602001600081526020016002815250601060008201518160000155602082015181600101556040820151816002015550506040518060600160405280600181526020016000815260200160028152506013600082015181600001556020820151816001015560408201518160020155505060036016556003601755348015620001c957600080fd5b506040518060400160405280600681526020017f5361626f6b7500000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f534f4b550000000000000000000000000000000000000000000000000000000081525081600390805190602001906200024e929190620008ba565b50806004908051906020019062000267929190620008ba565b5050506200028a6200027e6200067960201b60201c565b6200068160201b60201c565b620002c9336200029f6200074760201b60201c565b600a620002ad919062000b04565b620f4240620002bd919062000b55565b6200075060201b60201c565b6001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000388573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ae919062000c20565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000416573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043c919062000c20565b6040518363ffffffff1660e01b81526004016200045b92919062000c63565b6020604051808303816000875af11580156200047b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a1919062000c20565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e03565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ba9062000cf1565b60405180910390fd5b620007d760008383620008b560201b60201c565b8060026000828254620007eb919062000d13565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000842919062000d13565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008a9919062000d81565b60405180910390a35050565b505050565b828054620008c89062000dcd565b90600052602060002090601f016020900481019282620008ec576000855562000938565b82601f106200090757805160ff191683800117855562000938565b8280016001018555821562000938579182015b82811115620009375782518255916020019190600101906200091a565b5b5090506200094791906200094b565b5090565b5b80821115620009665760008160009055506001016200094c565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009f857808604811115620009d057620009cf6200096a565b5b6001851615620009e05780820291505b8081029050620009f08562000999565b9450620009b0565b94509492505050565b60008262000a13576001905062000ae6565b8162000a23576000905062000ae6565b816001811462000a3c576002811462000a475762000a7d565b600191505062000ae6565b60ff84111562000a5c5762000a5b6200096a565b5b8360020a91508482111562000a765762000a756200096a565b5b5062000ae6565b5060208310610133831016604e8410600b841016171562000ab75782820a90508381111562000ab15762000ab06200096a565b5b62000ae6565b62000ac68484846001620009a6565b9250905081840481111562000ae05762000adf6200096a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b118262000aed565b915062000b1e8362000af7565b925062000b4d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a01565b905092915050565b600062000b628262000aed565b915062000b6f8362000aed565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bab5762000baa6200096a565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000be88262000bbb565b9050919050565b62000bfa8162000bdb565b811462000c0657600080fd5b50565b60008151905062000c1a8162000bef565b92915050565b60006020828403121562000c395762000c3862000bb6565b5b600062000c498482850162000c09565b91505092915050565b62000c5d8162000bdb565b82525050565b600060408201905062000c7a600083018562000c52565b62000c89602083018462000c52565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000cd9601f8362000c90565b915062000ce68262000ca1565b602082019050919050565b6000602082019050818103600083015262000d0c8162000cca565b9050919050565b600062000d208262000aed565b915062000d2d8362000aed565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d655762000d646200096a565b5b828201905092915050565b62000d7b8162000aed565b82525050565b600060208201905062000d98600083018462000d70565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000de657607f821691505b6020821081141562000dfd5762000dfc62000d9e565b5b50919050565b61492c8062000e136000396000f3fe6080604052600436106102b25760003560e01c806370a0823111610175578063a457c2d7116100dc578063dd62ed3e11610095578063e9dae5ed1161006f578063e9dae5ed14610abf578063f2fde38b14610ae8578063f66895a314610b11578063f887ea4014610b3e576102b9565b8063dd62ed3e14610a30578063e01af92c14610a6d578063e545fd6d14610a96576102b9565b8063a457c2d7146108fa578063a8aa1b3114610937578063a9059cbb14610962578063aa4bde281461099f578063c18bc195146109ca578063dbe66ca0146109f3576102b9565b80638c0b5e221161012e5780638c0b5e22146107fe5780638cd4426d146108295780638da5cb5b1461085257806395d89b411461087d5780639d0014b1146108a85780639e252f00146108d1576102b9565b806370a08231146106fe578063715018a61461073b578063728f8eea14610752578063751039fc1461077f5780637b208769146107aa57806382aa7c68146107d5576102b9565b8063313ce567116102195780634ada218b116101d25780634ada218b146106005780634cdc9c631461062b57806350c9a88f146106565780636256d181146106815780636ddd1713146106aa578063703a4902146106d5576102b9565b8063313ce567146104e05780633811ac021461050b57806339509351146105345780633bbac579146105715780633e65d4aa146105ae57806340b28c2f146105d7576102b9565b80632253163d1161026b5780632253163d146103d057806323b872dd146103fb57806326b5d32f14610438578063293b7ef4146104615780632b8149871461048c5780632dc0562d146104b5576102b9565b80630445b667146102be57806306fdde03146102e95780630873321414610314578063095ea7b31461033d57806318160ddd1461037a578063185870f9146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b69565b6040516102e091906133e9565b60405180910390f35b3480156102f557600080fd5b506102fe610b6f565b60405161030b919061349d565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906134ff565b610c01565b005b34801561034957600080fd5b50610364600480360381019061035f91906135b0565b610cdd565b604051610371919061360b565b60405180910390f35b34801561038657600080fd5b5061038f610cfb565b60405161039c91906133e9565b60405180910390f35b3480156103b157600080fd5b506103ba610d05565b6040516103c79190613635565b60405180910390f35b3480156103dc57600080fd5b506103e5610d2b565b6040516103f291906133e9565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613650565b610d31565b60405161042f919061360b565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a91906134ff565b610e32565b005b34801561046d57600080fd5b50610476610f9d565b60405161048391906133e9565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906136cf565b610fa3565b005b3480156104c157600080fd5b506104ca61107a565b6040516104d79190613635565b60405180910390f35b3480156104ec57600080fd5b506104f56110a0565b604051610502919061372b565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d919061388e565b6110a9565b005b34801561054057600080fd5b5061055b600480360381019061055691906135b0565b611214565b604051610568919061360b565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906138d7565b6112c0565b6040516105a5919061360b565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d091906138d7565b6112e0565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190613942565b6113a0565b005b34801561060c57600080fd5b506106156114a2565b604051610622919061360b565b60405180910390f35b34801561063757600080fd5b506106406114b5565b60405161064d91906133e9565b60405180910390f35b34801561066257600080fd5b5061066b6114bb565b60405161067891906133e9565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613982565b6114c1565b005b3480156106b657600080fd5b506106bf61155a565b6040516106cc919061360b565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f791906138d7565b61156d565b005b34801561070a57600080fd5b50610725600480360381019061072091906138d7565b61162d565b60405161073291906133e9565b60405180910390f35b34801561074757600080fd5b50610750611675565b005b34801561075e57600080fd5b506107676116fd565b604051610776939291906139af565b60405180910390f35b34801561078b57600080fd5b50610794611715565b6040516107a1919061360b565b60405180910390f35b3480156107b657600080fd5b506107bf6117bc565b6040516107cc9190613635565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f79190613982565b6117e2565b005b34801561080a57600080fd5b506108136118f5565b60405161082091906133e9565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b91906135b0565b6118fb565b005b34801561085e57600080fd5b506108676119df565b6040516108749190613635565b60405180910390f35b34801561088957600080fd5b50610892611a09565b60405161089f919061349d565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190613982565b611a9b565b005b3480156108dd57600080fd5b506108f860048036038101906108f39190613982565b611b21565b005b34801561090657600080fd5b50610921600480360381019061091c91906135b0565b611bae565b60405161092e919061360b565b60405180910390f35b34801561094357600080fd5b5061094c611ca2565b6040516109599190613635565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906135b0565b611cc8565b604051610996919061360b565b60405180910390f35b3480156109ab57600080fd5b506109b4611ce6565b6040516109c191906133e9565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613982565b611cec565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906138d7565b611d85565b604051610a27919061360b565b60405180910390f35b348015610a3c57600080fd5b50610a576004803603810190610a5291906139e6565b611da5565b604051610a6491906133e9565b60405180910390f35b348015610a7957600080fd5b50610a946004803603810190610a8f9190613a26565b611e2c565b005b348015610aa257600080fd5b50610abd6004803603810190610ab891906136cf565b611ec5565b005b348015610acb57600080fd5b50610ae66004803603810190610ae191906134ff565b611f9c565b005b348015610af457600080fd5b50610b0f6004803603810190610b0a91906138d7565b612078565b005b348015610b1d57600080fd5b50610b26612170565b604051610b35939291906139af565b60405180910390f35b348015610b4a57600080fd5b50610b53612188565b604051610b609190613ab2565b60405180910390f35b600a5481565b606060038054610b7e90613afc565b80601f0160208091040260200160405190810160405280929190818152602001828054610baa90613afc565b8015610bf75780601f10610bcc57610100808354040283529160200191610bf7565b820191906000526020600020905b815481529060010190602001808311610bda57829003601f168201915b5050505050905090565b610c096121ae565b73ffffffffffffffffffffffffffffffffffffffff16610c276119df565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613b7a565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506013600082015181600001556020820151816001015560408201518160020155905050808284610cc89190613bc9565b610cd29190613bc9565b601781905550505050565b6000610cf1610cea6121ae565b84846121b6565b6001905092915050565b6000600254905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000610d3e848484612381565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d896121ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090613c91565b60405180910390fd5b610e2685610e156121ae565b8584610e219190613cb1565b6121b6565b60019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e8c57600080fd5b6000479050610e9a84612a4b565b60008147610ea89190613cb1565b90506000831115610f2057610f1f8385610ec29190613bc9565b8483610ece9190613ce5565b610ed89190613d6e565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b6000841115610f9657610f958385610f389190613bc9565b8583610f449190613ce5565b610f4e9190613d6e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b5050505050565b60165481565b610fab6121ae565b73ffffffffffffffffffffffffffffffffffffffff16610fc96119df565b73ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613b7a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b6110b16121ae565b73ffffffffffffffffffffffffffffffffffffffff166110cf6119df565b73ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613b7a565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461117f57600080fd5b60005b8151811015611210576000601960008484815181106111a4576111a3613d9f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061120890613dce565b915050611182565b5050565b60006112b66112216121ae565b84846001600061122f6121ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112b19190613bc9565b6121b6565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6112e86121ae565b73ffffffffffffffffffffffffffffffffffffffff166113066119df565b73ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390613b7a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113a86121ae565b73ffffffffffffffffffffffffffffffffffffffff166113c66119df565b73ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613b7a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60085481565b60095481565b6114c96121ae565b73ffffffffffffffffffffffffffffffffffffffff166114e76119df565b73ffffffffffffffffffffffffffffffffffffffff161461153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153490613b7a565b60405180910390fd5b670de0b6b3a7640000816115519190613ce5565b600b8190555050565b600760159054906101000a900460ff1681565b6115756121ae565b73ffffffffffffffffffffffffffffffffffffffff166115936119df565b73ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090613b7a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61167d6121ae565b73ffffffffffffffffffffffffffffffffffffffff1661169b6119df565b73ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e890613b7a565b60405180910390fd5b6116fb6000612d82565b565b60108060000154908060010154908060020154905083565b600061171f6121ae565b73ffffffffffffffffffffffffffffffffffffffff1661173d6119df565b73ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90613b7a565b60405180910390fd5b69d3c21bcecceda1000000600b8190555069d3c21bcecceda1000000600c819055506001905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117ea6121ae565b73ffffffffffffffffffffffffffffffffffffffff166118086119df565b73ffffffffffffffffffffffffffffffffffffffff161461185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590613b7a565b60405180910390fd5b600760169054906101000a900460ff16156118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613e63565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6119796119df565b836040518363ffffffff1660e01b8152600401611997929190613e83565b6020604051808303816000875af11580156119b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119da9190613ec1565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a1890613afc565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4490613afc565b8015611a915780601f10611a6657610100808354040283529160200191611a91565b820191906000526020600020905b815481529060010190602001808311611a7457829003601f168201915b5050505050905090565b611aa36121ae565b73ffffffffffffffffffffffffffffffffffffffff16611ac16119df565b73ffffffffffffffffffffffffffffffffffffffff1614611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90613b7a565b60405180910390fd5b80600a8190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b7b57600080fd5b611bab81611b876119df565b73ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b50565b60008060016000611bbd6121ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613f60565b60405180910390fd5b611c97611c856121ae565b858584611c929190613cb1565b6121b6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cdc611cd56121ae565b8484612381565b6001905092915050565b600c5481565b611cf46121ae565b73ffffffffffffffffffffffffffffffffffffffff16611d126119df565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613b7a565b60405180910390fd5b670de0b6b3a764000081611d7c9190613ce5565b600c8190555050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e346121ae565b73ffffffffffffffffffffffffffffffffffffffff16611e526119df565b73ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90613b7a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ecd6121ae565b73ffffffffffffffffffffffffffffffffffffffff16611eeb6119df565b73ffffffffffffffffffffffffffffffffffffffff1614611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3890613b7a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fa46121ae565b73ffffffffffffffffffffffffffffffffffffffff16611fc26119df565b73ffffffffffffffffffffffffffffffffffffffff1614612018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200f90613b7a565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060106000820151816000015560208201518160010155604082015181600201559050508082846120639190613bc9565b61206d9190613bc9565b601681905550505050565b6120806121ae565b73ffffffffffffffffffffffffffffffffffffffff1661209e6119df565b73ffffffffffffffffffffffffffffffffffffffff16146120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb90613b7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613ff2565b60405180910390fd5b61216d81612d82565b50565b60138060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d90614084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90614116565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237491906133e9565b60405180910390a3505050565b600081116123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb906141a8565b60405180910390fd5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124685750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614214565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561254b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125645750600760149054906101000a900460ff16155b1561282057600760169054906101000a900460ff166125b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125af90614280565b60405180910390fd5b436009546008546125c99190613bc9565b111561272c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461267d576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461272b576001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115612771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612768906142ec565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461281f57600c54816127d38461162d565b6127dd9190613bc9565b111561281e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128159061437e565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806128865750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806128da5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128e8576000905061297d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561295f5760646017548361294e9190613ce5565b6129589190613d6e565b905061297c565b60646016548361296f9190613ce5565b6129799190613d6e565b90505b5b600760159054906101000a900460ff1680156129a65750600760149054906101000a900460ff16155b8015612a005750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612a0c5750600081115b15612a1a57612a19612e48565b5b612a3084848385612a2b9190613cb1565b61304c565b6000811115612a4557612a4484308361304c565b5b50505050565b6000600267ffffffffffffffff811115612a6857612a6761374b565b5b604051908082528060200260200182016040528015612a965781602001602082028036833780820191505090505b5090503081600081518110612aae57612aad613d9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7991906143b3565b81600181518110612b8d57612b8c613d9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bf430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121b6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c589594939291906144d9565b600060405180830381600087803b158015612c7257600080fd5b505af1158015612c86573d6000803e3d6000fd5b505050505050565b80471015612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc89061457f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612cf7906145d0565b60006040518083038185875af1925050503d8060008114612d34576040519150601f19603f3d011682016040523d82523d6000602084013e612d39565b606091505b5050905080612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7490614657565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661304a576001600760146101000a81548160ff0219169083151502179055506000612e823061162d565b9050600a54811061302d5760006002601754612e9e9190613ce5565b905060008160136001015484612eb49190613ce5565b612ebe9190613d6e565b905060008184612ece9190613cb1565b90506000479050612ede82612a4b565b60008147612eec9190613cb1565b9050600060136001015486612f019190613cb1565b82612f0c9190613d6e565b9050600060136001015482612f219190613ce5565b90506000811115612f3757612f3686826132cb565b5b6000601360000154600284612f4c9190613ce5565b612f569190613ce5565b90506000811115612fad57612fac81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b6000601360020154600285612fc29190613ce5565b612fcc9190613ce5565b905060008111156130235761302281600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b3906146e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561312c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131239061477b565b60405180910390fd5b6131378383836133cb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b49061480d565b60405180910390fd5b81816131c99190613cb1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132599190613bc9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132bd91906133e9565b60405180910390a350505050565b6132f830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121b6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016133819695949392919061482d565b60606040518083038185885af115801561339f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133c491906148a3565b5050505050565b505050565b6000819050919050565b6133e3816133d0565b82525050565b60006020820190506133fe60008301846133da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561343e578082015181840152602081019050613423565b8381111561344d576000848401525b50505050565b6000601f19601f8301169050919050565b600061346f82613404565b613479818561340f565b9350613489818560208601613420565b61349281613453565b840191505092915050565b600060208201905081810360008301526134b78184613464565b905092915050565b6000604051905090565b600080fd5b600080fd5b6134dc816133d0565b81146134e757600080fd5b50565b6000813590506134f9816134d3565b92915050565b600080600060608486031215613518576135176134c9565b5b6000613526868287016134ea565b9350506020613537868287016134ea565b9250506040613548868287016134ea565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061357d82613552565b9050919050565b61358d81613572565b811461359857600080fd5b50565b6000813590506135aa81613584565b92915050565b600080604083850312156135c7576135c66134c9565b5b60006135d58582860161359b565b92505060206135e6858286016134ea565b9150509250929050565b60008115159050919050565b613605816135f0565b82525050565b600060208201905061362060008301846135fc565b92915050565b61362f81613572565b82525050565b600060208201905061364a6000830184613626565b92915050565b600080600060608486031215613669576136686134c9565b5b60006136778682870161359b565b93505060206136888682870161359b565b9250506040613699868287016134ea565b9150509250925092565b6136ac816135f0565b81146136b757600080fd5b50565b6000813590506136c9816136a3565b92915050565b600080604083850312156136e6576136e56134c9565b5b60006136f48582860161359b565b9250506020613705858286016136ba565b9150509250929050565b600060ff82169050919050565b6137258161370f565b82525050565b6000602082019050613740600083018461371c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61378382613453565b810181811067ffffffffffffffff821117156137a2576137a161374b565b5b80604052505050565b60006137b56134bf565b90506137c1828261377a565b919050565b600067ffffffffffffffff8211156137e1576137e061374b565b5b602082029050602081019050919050565b600080fd5b600061380a613805846137c6565b6137ab565b9050808382526020820190506020840283018581111561382d5761382c6137f2565b5b835b818110156138565780613842888261359b565b84526020840193505060208101905061382f565b5050509392505050565b600082601f83011261387557613874613746565b5b81356138858482602086016137f7565b91505092915050565b6000602082840312156138a4576138a36134c9565b5b600082013567ffffffffffffffff8111156138c2576138c16134ce565b5b6138ce84828501613860565b91505092915050565b6000602082840312156138ed576138ec6134c9565b5b60006138fb8482850161359b565b91505092915050565b600061390f82613572565b9050919050565b61391f81613904565b811461392a57600080fd5b50565b60008135905061393c81613916565b92915050565b60008060408385031215613959576139586134c9565b5b60006139678582860161392d565b92505060206139788582860161359b565b9150509250929050565b600060208284031215613998576139976134c9565b5b60006139a6848285016134ea565b91505092915050565b60006060820190506139c460008301866133da565b6139d160208301856133da565b6139de60408301846133da565b949350505050565b600080604083850312156139fd576139fc6134c9565b5b6000613a0b8582860161359b565b9250506020613a1c8582860161359b565b9150509250929050565b600060208284031215613a3c57613a3b6134c9565b5b6000613a4a848285016136ba565b91505092915050565b6000819050919050565b6000613a78613a73613a6e84613552565b613a53565b613552565b9050919050565b6000613a8a82613a5d565b9050919050565b6000613a9c82613a7f565b9050919050565b613aac81613a91565b82525050565b6000602082019050613ac76000830184613aa3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b1457607f821691505b60208210811415613b2857613b27613acd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b6460208361340f565b9150613b6f82613b2e565b602082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd4826133d0565b9150613bdf836133d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c1457613c13613b9a565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c7b60288361340f565b9150613c8682613c1f565b604082019050919050565b60006020820190508181036000830152613caa81613c6e565b9050919050565b6000613cbc826133d0565b9150613cc7836133d0565b925082821015613cda57613cd9613b9a565b5b828203905092915050565b6000613cf0826133d0565b9150613cfb836133d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d3457613d33613b9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d79826133d0565b9150613d84836133d0565b925082613d9457613d93613d3f565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613dd9826133d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613e0c57613e0b613b9a565b5b600182019050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613e4d60168361340f565b9150613e5882613e17565b602082019050919050565b60006020820190508181036000830152613e7c81613e40565b9050919050565b6000604082019050613e986000830185613626565b613ea560208301846133da565b9392505050565b600081519050613ebb816136a3565b92915050565b600060208284031215613ed757613ed66134c9565b5b6000613ee584828501613eac565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f4a60258361340f565b9150613f5582613eee565b604082019050919050565b60006020820190508181036000830152613f7981613f3d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fdc60268361340f565b9150613fe782613f80565b604082019050919050565b6000602082019050818103600083015261400b81613fcf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061406e60248361340f565b915061407982614012565b604082019050919050565b6000602082019050818103600083015261409d81614061565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061410060228361340f565b915061410b826140a4565b604082019050919050565b6000602082019050818103600083015261412f816140f3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061419260298361340f565b915061419d82614136565b604082019050919050565b600060208201905081810360008301526141c181614185565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006141fe60198361340f565b9150614209826141c8565b602082019050919050565b6000602082019050818103600083015261422d816141f1565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b600061426a60168361340f565b915061427582614234565b602082019050919050565b600060208201905081810360008301526142998161425d565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b60006142d6601d8361340f565b91506142e1826142a0565b602082019050919050565b60006020820190508181036000830152614305816142c9565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061436860218361340f565b91506143738261430c565b604082019050919050565b600060208201905081810360008301526143978161435b565b9050919050565b6000815190506143ad81613584565b92915050565b6000602082840312156143c9576143c86134c9565b5b60006143d78482850161439e565b91505092915050565b6000819050919050565b60006144056144006143fb846143e0565b613a53565b6133d0565b9050919050565b614415816143ea565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61445081613572565b82525050565b60006144628383614447565b60208301905092915050565b6000602082019050919050565b60006144868261441b565b6144908185614426565b935061449b83614437565b8060005b838110156144cc5781516144b38882614456565b97506144be8361446e565b92505060018101905061449f565b5085935050505092915050565b600060a0820190506144ee60008301886133da565b6144fb602083018761440c565b818103604083015261450d818661447b565b905061451c6060830185613626565b61452960808301846133da565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614569601d8361340f565b915061457482614533565b602082019050919050565b600060208201905081810360008301526145988161455c565b9050919050565b600081905092915050565b50565b60006145ba60008361459f565b91506145c5826145aa565b600082019050919050565b60006145db826145ad565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614641603a8361340f565b915061464c826145e5565b604082019050919050565b6000602082019050818103600083015261467081614634565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146d360258361340f565b91506146de82614677565b604082019050919050565b60006020820190508181036000830152614702816146c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061476560238361340f565b915061477082614709565b604082019050919050565b6000602082019050818103600083015261479481614758565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147f760268361340f565b91506148028261479b565b604082019050919050565b60006020820190508181036000830152614826816147ea565b9050919050565b600060c0820190506148426000830189613626565b61484f60208301886133da565b61485c604083018761440c565b614869606083018661440c565b6148766080830185613626565b61488360a08301846133da565b979650505050505050565b60008151905061489d816134d3565b92915050565b6000806000606084860312156148bc576148bb6134c9565b5b60006148ca8682870161488e565b93505060206148db8682870161488e565b92505060406148ec8682870161488e565b915050925092509256fea2646970667358221220aae208be6ce3242dfd3b8bb741d358e6bb09e7db83b3dbab3bf4e89c1d8312b964736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c806370a0823111610175578063a457c2d7116100dc578063dd62ed3e11610095578063e9dae5ed1161006f578063e9dae5ed14610abf578063f2fde38b14610ae8578063f66895a314610b11578063f887ea4014610b3e576102b9565b8063dd62ed3e14610a30578063e01af92c14610a6d578063e545fd6d14610a96576102b9565b8063a457c2d7146108fa578063a8aa1b3114610937578063a9059cbb14610962578063aa4bde281461099f578063c18bc195146109ca578063dbe66ca0146109f3576102b9565b80638c0b5e221161012e5780638c0b5e22146107fe5780638cd4426d146108295780638da5cb5b1461085257806395d89b411461087d5780639d0014b1146108a85780639e252f00146108d1576102b9565b806370a08231146106fe578063715018a61461073b578063728f8eea14610752578063751039fc1461077f5780637b208769146107aa57806382aa7c68146107d5576102b9565b8063313ce567116102195780634ada218b116101d25780634ada218b146106005780634cdc9c631461062b57806350c9a88f146106565780636256d181146106815780636ddd1713146106aa578063703a4902146106d5576102b9565b8063313ce567146104e05780633811ac021461050b57806339509351146105345780633bbac579146105715780633e65d4aa146105ae57806340b28c2f146105d7576102b9565b80632253163d1161026b5780632253163d146103d057806323b872dd146103fb57806326b5d32f14610438578063293b7ef4146104615780632b8149871461048c5780632dc0562d146104b5576102b9565b80630445b667146102be57806306fdde03146102e95780630873321414610314578063095ea7b31461033d57806318160ddd1461037a578063185870f9146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b69565b6040516102e091906133e9565b60405180910390f35b3480156102f557600080fd5b506102fe610b6f565b60405161030b919061349d565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906134ff565b610c01565b005b34801561034957600080fd5b50610364600480360381019061035f91906135b0565b610cdd565b604051610371919061360b565b60405180910390f35b34801561038657600080fd5b5061038f610cfb565b60405161039c91906133e9565b60405180910390f35b3480156103b157600080fd5b506103ba610d05565b6040516103c79190613635565b60405180910390f35b3480156103dc57600080fd5b506103e5610d2b565b6040516103f291906133e9565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613650565b610d31565b60405161042f919061360b565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a91906134ff565b610e32565b005b34801561046d57600080fd5b50610476610f9d565b60405161048391906133e9565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906136cf565b610fa3565b005b3480156104c157600080fd5b506104ca61107a565b6040516104d79190613635565b60405180910390f35b3480156104ec57600080fd5b506104f56110a0565b604051610502919061372b565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d919061388e565b6110a9565b005b34801561054057600080fd5b5061055b600480360381019061055691906135b0565b611214565b604051610568919061360b565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906138d7565b6112c0565b6040516105a5919061360b565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d091906138d7565b6112e0565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190613942565b6113a0565b005b34801561060c57600080fd5b506106156114a2565b604051610622919061360b565b60405180910390f35b34801561063757600080fd5b506106406114b5565b60405161064d91906133e9565b60405180910390f35b34801561066257600080fd5b5061066b6114bb565b60405161067891906133e9565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613982565b6114c1565b005b3480156106b657600080fd5b506106bf61155a565b6040516106cc919061360b565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f791906138d7565b61156d565b005b34801561070a57600080fd5b50610725600480360381019061072091906138d7565b61162d565b60405161073291906133e9565b60405180910390f35b34801561074757600080fd5b50610750611675565b005b34801561075e57600080fd5b506107676116fd565b604051610776939291906139af565b60405180910390f35b34801561078b57600080fd5b50610794611715565b6040516107a1919061360b565b60405180910390f35b3480156107b657600080fd5b506107bf6117bc565b6040516107cc9190613635565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f79190613982565b6117e2565b005b34801561080a57600080fd5b506108136118f5565b60405161082091906133e9565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b91906135b0565b6118fb565b005b34801561085e57600080fd5b506108676119df565b6040516108749190613635565b60405180910390f35b34801561088957600080fd5b50610892611a09565b60405161089f919061349d565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190613982565b611a9b565b005b3480156108dd57600080fd5b506108f860048036038101906108f39190613982565b611b21565b005b34801561090657600080fd5b50610921600480360381019061091c91906135b0565b611bae565b60405161092e919061360b565b60405180910390f35b34801561094357600080fd5b5061094c611ca2565b6040516109599190613635565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906135b0565b611cc8565b604051610996919061360b565b60405180910390f35b3480156109ab57600080fd5b506109b4611ce6565b6040516109c191906133e9565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613982565b611cec565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906138d7565b611d85565b604051610a27919061360b565b60405180910390f35b348015610a3c57600080fd5b50610a576004803603810190610a5291906139e6565b611da5565b604051610a6491906133e9565b60405180910390f35b348015610a7957600080fd5b50610a946004803603810190610a8f9190613a26565b611e2c565b005b348015610aa257600080fd5b50610abd6004803603810190610ab891906136cf565b611ec5565b005b348015610acb57600080fd5b50610ae66004803603810190610ae191906134ff565b611f9c565b005b348015610af457600080fd5b50610b0f6004803603810190610b0a91906138d7565b612078565b005b348015610b1d57600080fd5b50610b26612170565b604051610b35939291906139af565b60405180910390f35b348015610b4a57600080fd5b50610b53612188565b604051610b609190613ab2565b60405180910390f35b600a5481565b606060038054610b7e90613afc565b80601f0160208091040260200160405190810160405280929190818152602001828054610baa90613afc565b8015610bf75780601f10610bcc57610100808354040283529160200191610bf7565b820191906000526020600020905b815481529060010190602001808311610bda57829003601f168201915b5050505050905090565b610c096121ae565b73ffffffffffffffffffffffffffffffffffffffff16610c276119df565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613b7a565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506013600082015181600001556020820151816001015560408201518160020155905050808284610cc89190613bc9565b610cd29190613bc9565b601781905550505050565b6000610cf1610cea6121ae565b84846121b6565b6001905092915050565b6000600254905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000610d3e848484612381565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d896121ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090613c91565b60405180910390fd5b610e2685610e156121ae565b8584610e219190613cb1565b6121b6565b60019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e8c57600080fd5b6000479050610e9a84612a4b565b60008147610ea89190613cb1565b90506000831115610f2057610f1f8385610ec29190613bc9565b8483610ece9190613ce5565b610ed89190613d6e565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b6000841115610f9657610f958385610f389190613bc9565b8583610f449190613ce5565b610f4e9190613d6e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b5050505050565b60165481565b610fab6121ae565b73ffffffffffffffffffffffffffffffffffffffff16610fc96119df565b73ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613b7a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b6110b16121ae565b73ffffffffffffffffffffffffffffffffffffffff166110cf6119df565b73ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613b7a565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461117f57600080fd5b60005b8151811015611210576000601960008484815181106111a4576111a3613d9f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061120890613dce565b915050611182565b5050565b60006112b66112216121ae565b84846001600061122f6121ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112b19190613bc9565b6121b6565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6112e86121ae565b73ffffffffffffffffffffffffffffffffffffffff166113066119df565b73ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390613b7a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113a86121ae565b73ffffffffffffffffffffffffffffffffffffffff166113c66119df565b73ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613b7a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60085481565b60095481565b6114c96121ae565b73ffffffffffffffffffffffffffffffffffffffff166114e76119df565b73ffffffffffffffffffffffffffffffffffffffff161461153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153490613b7a565b60405180910390fd5b670de0b6b3a7640000816115519190613ce5565b600b8190555050565b600760159054906101000a900460ff1681565b6115756121ae565b73ffffffffffffffffffffffffffffffffffffffff166115936119df565b73ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090613b7a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61167d6121ae565b73ffffffffffffffffffffffffffffffffffffffff1661169b6119df565b73ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e890613b7a565b60405180910390fd5b6116fb6000612d82565b565b60108060000154908060010154908060020154905083565b600061171f6121ae565b73ffffffffffffffffffffffffffffffffffffffff1661173d6119df565b73ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90613b7a565b60405180910390fd5b69d3c21bcecceda1000000600b8190555069d3c21bcecceda1000000600c819055506001905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117ea6121ae565b73ffffffffffffffffffffffffffffffffffffffff166118086119df565b73ffffffffffffffffffffffffffffffffffffffff161461185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590613b7a565b60405180910390fd5b600760169054906101000a900460ff16156118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613e63565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6119796119df565b836040518363ffffffff1660e01b8152600401611997929190613e83565b6020604051808303816000875af11580156119b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119da9190613ec1565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a1890613afc565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4490613afc565b8015611a915780601f10611a6657610100808354040283529160200191611a91565b820191906000526020600020905b815481529060010190602001808311611a7457829003601f168201915b5050505050905090565b611aa36121ae565b73ffffffffffffffffffffffffffffffffffffffff16611ac16119df565b73ffffffffffffffffffffffffffffffffffffffff1614611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90613b7a565b60405180910390fd5b80600a8190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b7b57600080fd5b611bab81611b876119df565b73ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b50565b60008060016000611bbd6121ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613f60565b60405180910390fd5b611c97611c856121ae565b858584611c929190613cb1565b6121b6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cdc611cd56121ae565b8484612381565b6001905092915050565b600c5481565b611cf46121ae565b73ffffffffffffffffffffffffffffffffffffffff16611d126119df565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613b7a565b60405180910390fd5b670de0b6b3a764000081611d7c9190613ce5565b600c8190555050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e346121ae565b73ffffffffffffffffffffffffffffffffffffffff16611e526119df565b73ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90613b7a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ecd6121ae565b73ffffffffffffffffffffffffffffffffffffffff16611eeb6119df565b73ffffffffffffffffffffffffffffffffffffffff1614611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3890613b7a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fa46121ae565b73ffffffffffffffffffffffffffffffffffffffff16611fc26119df565b73ffffffffffffffffffffffffffffffffffffffff1614612018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200f90613b7a565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060106000820151816000015560208201518160010155604082015181600201559050508082846120639190613bc9565b61206d9190613bc9565b601681905550505050565b6120806121ae565b73ffffffffffffffffffffffffffffffffffffffff1661209e6119df565b73ffffffffffffffffffffffffffffffffffffffff16146120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb90613b7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613ff2565b60405180910390fd5b61216d81612d82565b50565b60138060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d90614084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90614116565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237491906133e9565b60405180910390a3505050565b600081116123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb906141a8565b60405180910390fd5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124685750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614214565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561254b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125645750600760149054906101000a900460ff16155b1561282057600760169054906101000a900460ff166125b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125af90614280565b60405180910390fd5b436009546008546125c99190613bc9565b111561272c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461267d576001601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461272b576001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115612771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612768906142ec565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461281f57600c54816127d38461162d565b6127dd9190613bc9565b111561281e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128159061437e565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806128865750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806128da5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128e8576000905061297d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561295f5760646017548361294e9190613ce5565b6129589190613d6e565b905061297c565b60646016548361296f9190613ce5565b6129799190613d6e565b90505b5b600760159054906101000a900460ff1680156129a65750600760149054906101000a900460ff16155b8015612a005750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612a0c5750600081115b15612a1a57612a19612e48565b5b612a3084848385612a2b9190613cb1565b61304c565b6000811115612a4557612a4484308361304c565b5b50505050565b6000600267ffffffffffffffff811115612a6857612a6761374b565b5b604051908082528060200260200182016040528015612a965781602001602082028036833780820191505090505b5090503081600081518110612aae57612aad613d9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7991906143b3565b81600181518110612b8d57612b8c613d9f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bf430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121b6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c589594939291906144d9565b600060405180830381600087803b158015612c7257600080fd5b505af1158015612c86573d6000803e3d6000fd5b505050505050565b80471015612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc89061457f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612cf7906145d0565b60006040518083038185875af1925050503d8060008114612d34576040519150601f19603f3d011682016040523d82523d6000602084013e612d39565b606091505b5050905080612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7490614657565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661304a576001600760146101000a81548160ff0219169083151502179055506000612e823061162d565b9050600a54811061302d5760006002601754612e9e9190613ce5565b905060008160136001015484612eb49190613ce5565b612ebe9190613d6e565b905060008184612ece9190613cb1565b90506000479050612ede82612a4b565b60008147612eec9190613cb1565b9050600060136001015486612f019190613cb1565b82612f0c9190613d6e565b9050600060136001015482612f219190613ce5565b90506000811115612f3757612f3686826132cb565b5b6000601360000154600284612f4c9190613ce5565b612f569190613ce5565b90506000811115612fad57612fac81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b6000601360020154600285612fc29190613ce5565b612fcc9190613ce5565b905060008111156130235761302281600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8e90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b3906146e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561312c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131239061477b565b60405180910390fd5b6131378383836133cb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b49061480d565b60405180910390fd5b81816131c99190613cb1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132599190613bc9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132bd91906133e9565b60405180910390a350505050565b6132f830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121b6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016133819695949392919061482d565b60606040518083038185885af115801561339f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133c491906148a3565b5050505050565b505050565b6000819050919050565b6133e3816133d0565b82525050565b60006020820190506133fe60008301846133da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561343e578082015181840152602081019050613423565b8381111561344d576000848401525b50505050565b6000601f19601f8301169050919050565b600061346f82613404565b613479818561340f565b9350613489818560208601613420565b61349281613453565b840191505092915050565b600060208201905081810360008301526134b78184613464565b905092915050565b6000604051905090565b600080fd5b600080fd5b6134dc816133d0565b81146134e757600080fd5b50565b6000813590506134f9816134d3565b92915050565b600080600060608486031215613518576135176134c9565b5b6000613526868287016134ea565b9350506020613537868287016134ea565b9250506040613548868287016134ea565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061357d82613552565b9050919050565b61358d81613572565b811461359857600080fd5b50565b6000813590506135aa81613584565b92915050565b600080604083850312156135c7576135c66134c9565b5b60006135d58582860161359b565b92505060206135e6858286016134ea565b9150509250929050565b60008115159050919050565b613605816135f0565b82525050565b600060208201905061362060008301846135fc565b92915050565b61362f81613572565b82525050565b600060208201905061364a6000830184613626565b92915050565b600080600060608486031215613669576136686134c9565b5b60006136778682870161359b565b93505060206136888682870161359b565b9250506040613699868287016134ea565b9150509250925092565b6136ac816135f0565b81146136b757600080fd5b50565b6000813590506136c9816136a3565b92915050565b600080604083850312156136e6576136e56134c9565b5b60006136f48582860161359b565b9250506020613705858286016136ba565b9150509250929050565b600060ff82169050919050565b6137258161370f565b82525050565b6000602082019050613740600083018461371c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61378382613453565b810181811067ffffffffffffffff821117156137a2576137a161374b565b5b80604052505050565b60006137b56134bf565b90506137c1828261377a565b919050565b600067ffffffffffffffff8211156137e1576137e061374b565b5b602082029050602081019050919050565b600080fd5b600061380a613805846137c6565b6137ab565b9050808382526020820190506020840283018581111561382d5761382c6137f2565b5b835b818110156138565780613842888261359b565b84526020840193505060208101905061382f565b5050509392505050565b600082601f83011261387557613874613746565b5b81356138858482602086016137f7565b91505092915050565b6000602082840312156138a4576138a36134c9565b5b600082013567ffffffffffffffff8111156138c2576138c16134ce565b5b6138ce84828501613860565b91505092915050565b6000602082840312156138ed576138ec6134c9565b5b60006138fb8482850161359b565b91505092915050565b600061390f82613572565b9050919050565b61391f81613904565b811461392a57600080fd5b50565b60008135905061393c81613916565b92915050565b60008060408385031215613959576139586134c9565b5b60006139678582860161392d565b92505060206139788582860161359b565b9150509250929050565b600060208284031215613998576139976134c9565b5b60006139a6848285016134ea565b91505092915050565b60006060820190506139c460008301866133da565b6139d160208301856133da565b6139de60408301846133da565b949350505050565b600080604083850312156139fd576139fc6134c9565b5b6000613a0b8582860161359b565b9250506020613a1c8582860161359b565b9150509250929050565b600060208284031215613a3c57613a3b6134c9565b5b6000613a4a848285016136ba565b91505092915050565b6000819050919050565b6000613a78613a73613a6e84613552565b613a53565b613552565b9050919050565b6000613a8a82613a5d565b9050919050565b6000613a9c82613a7f565b9050919050565b613aac81613a91565b82525050565b6000602082019050613ac76000830184613aa3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b1457607f821691505b60208210811415613b2857613b27613acd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b6460208361340f565b9150613b6f82613b2e565b602082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd4826133d0565b9150613bdf836133d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c1457613c13613b9a565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c7b60288361340f565b9150613c8682613c1f565b604082019050919050565b60006020820190508181036000830152613caa81613c6e565b9050919050565b6000613cbc826133d0565b9150613cc7836133d0565b925082821015613cda57613cd9613b9a565b5b828203905092915050565b6000613cf0826133d0565b9150613cfb836133d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d3457613d33613b9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d79826133d0565b9150613d84836133d0565b925082613d9457613d93613d3f565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613dd9826133d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613e0c57613e0b613b9a565b5b600182019050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613e4d60168361340f565b9150613e5882613e17565b602082019050919050565b60006020820190508181036000830152613e7c81613e40565b9050919050565b6000604082019050613e986000830185613626565b613ea560208301846133da565b9392505050565b600081519050613ebb816136a3565b92915050565b600060208284031215613ed757613ed66134c9565b5b6000613ee584828501613eac565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f4a60258361340f565b9150613f5582613eee565b604082019050919050565b60006020820190508181036000830152613f7981613f3d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fdc60268361340f565b9150613fe782613f80565b604082019050919050565b6000602082019050818103600083015261400b81613fcf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061406e60248361340f565b915061407982614012565b604082019050919050565b6000602082019050818103600083015261409d81614061565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061410060228361340f565b915061410b826140a4565b604082019050919050565b6000602082019050818103600083015261412f816140f3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061419260298361340f565b915061419d82614136565b604082019050919050565b600060208201905081810360008301526141c181614185565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b60006141fe60198361340f565b9150614209826141c8565b602082019050919050565b6000602082019050818103600083015261422d816141f1565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b600061426a60168361340f565b915061427582614234565b602082019050919050565b600060208201905081810360008301526142998161425d565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b60006142d6601d8361340f565b91506142e1826142a0565b602082019050919050565b60006020820190508181036000830152614305816142c9565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061436860218361340f565b91506143738261430c565b604082019050919050565b600060208201905081810360008301526143978161435b565b9050919050565b6000815190506143ad81613584565b92915050565b6000602082840312156143c9576143c86134c9565b5b60006143d78482850161439e565b91505092915050565b6000819050919050565b60006144056144006143fb846143e0565b613a53565b6133d0565b9050919050565b614415816143ea565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61445081613572565b82525050565b60006144628383614447565b60208301905092915050565b6000602082019050919050565b60006144868261441b565b6144908185614426565b935061449b83614437565b8060005b838110156144cc5781516144b38882614456565b97506144be8361446e565b92505060018101905061449f565b5085935050505092915050565b600060a0820190506144ee60008301886133da565b6144fb602083018761440c565b818103604083015261450d818661447b565b905061451c6060830185613626565b61452960808301846133da565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614569601d8361340f565b915061457482614533565b602082019050919050565b600060208201905081810360008301526145988161455c565b9050919050565b600081905092915050565b50565b60006145ba60008361459f565b91506145c5826145aa565b600082019050919050565b60006145db826145ad565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614641603a8361340f565b915061464c826145e5565b604082019050919050565b6000602082019050818103600083015261467081614634565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146d360258361340f565b91506146de82614677565b604082019050919050565b60006020820190508181036000830152614702816146c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061476560238361340f565b915061477082614709565b604082019050919050565b6000602082019050818103600083015261479481614758565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147f760268361340f565b91506148028261479b565b604082019050919050565b60006020820190508181036000830152614826816147ea565b9050919050565b600060c0820190506148426000830189613626565b61484f60208301886133da565b61485c604083018761440c565b614869606083018661440c565b6148766080830185613626565b61488360a08301846133da565b979650505050505050565b60008151905061489d816134d3565b92915050565b6000806000606084860312156148bc576148bb6134c9565b5b60006148ca8682870161488e565b93505060206148db8682870161488e565b92505060406148ec8682870161488e565b915050925092509256fea2646970667358221220aae208be6ce3242dfd3b8bb741d358e6bb09e7db83b3dbab3bf4e89c1d8312b964736f6c634300080c0033

Deployed Bytecode Sourcemap

13375:9016:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13690:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2581:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19825:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4748:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3701:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13933:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14333:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5399:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21534:619;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14301:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20458:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14015:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3543:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20572:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14431:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20069:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20313:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13579:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13614:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13648:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20940:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13549:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20191:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3872:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12152:94;;;;;;;;;;;;;:::i;:::-;;14217:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;22161:166;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13853:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19315:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13741:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21186:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11929:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2800:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19197:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21375:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6948:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13489:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4212:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13792:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21061:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14375:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4450:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19096:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20795:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19597:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12254:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14257:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13461:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13690:44;;;;:::o;2581:100::-;2635:13;2668:5;2661:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2581:100;:::o;19825:232::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19948:41:::1;;;;;;;;19954:10;19948:41;;;;19966:10;19948:41;;;;19978:10;19948:41;;::::0;19936:9:::1;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;20039:10;20026;20013;:23;;;;:::i;:::-;:36;;;;:::i;:::-;20000:10;:49;;;;19825:232:::0;;;:::o;4748:169::-;4831:4;4848:39;4857:12;:10;:12::i;:::-;4871:7;4880:6;4848:8;:39::i;:::-;4905:4;4898:11;;4748:169;;;;:::o;3701:108::-;3762:7;3789:12;;3782:19;;3701:108;:::o;13933:75::-;;;;;;;;;;;;;:::o;14333:29::-;;;;:::o;5399:422::-;5505:4;5522:36;5532:6;5540:9;5551:6;5522:9;:36::i;:::-;5571:24;5598:11;:19;5610:6;5598:19;;;;;;;;;;;;;;;:33;5618:12;:10;:12::i;:::-;5598:33;;;;;;;;;;;;;;;;5571:60;;5670:6;5650:16;:26;;5642:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5732:57;5741:6;5749:12;:10;:12::i;:::-;5782:6;5763:16;:25;;;;:::i;:::-;5732:8;:57::i;:::-;5809:4;5802:11;;;5399:422;;;;;:::o;21534:619::-;21671:13;;;;;;;;;;;21657:27;;:10;:27;;;21648:37;;;;;;21696:19;21718:21;21696:43;;21750:24;21767:6;21750:16;:24::i;:::-;21785:18;21830:11;21806:21;:35;;;;:::i;:::-;21785:56;;21877:1;21855:19;:23;21852:140;;;21880:112;21971:19;21949;:41;;;;:::i;:::-;21926:19;21913:10;:32;;;;:::i;:::-;:78;;;;:::i;:::-;21888:13;;;;;;;;;;;21880:32;;;;:112;;;;:::i;:::-;21852:140;22028:1;22006:19;:23;22003:142;;;22031:114;22124:19;22102;:41;;;;:::i;:::-;22079:19;22066:10;:32;;;;:::i;:::-;:78;;;;:::i;:::-;22039:15;;;;;;;;;;;22031:34;;;;:114;;;;:::i;:::-;22003:142;21637:516;;21534:619;;;:::o;14301:25::-;;;;:::o;20458:104::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20549:5:::1;20532;:14;20538:7;20532:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20458:104:::0;;:::o;14015:69::-;;;;;;;;;;;;;:::o;3543:93::-;3601:5;3626:2;3619:9;;3543:93;:::o;20572:215::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20667:9:::1;;;;;;;;;;;20653:23;;:10;:23;;;20644:33;;;::::0;::::1;;20693:6;20688:92;20709:6;:13;20705:1;:17;20688:92;;;20763:5;20744;:16;20750:6;20757:1;20750:9;;;;;;;;:::i;:::-;;;;;;;;20744:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;20724:3;;;;;:::i;:::-;;;;20688:92;;;;20572:215:::0;:::o;6230:::-;6318:4;6335:80;6344:12;:10;:12::i;:::-;6358:7;6404:10;6367:11;:25;6379:12;:10;:12::i;:::-;6367:25;;;;;;;;;;;;;;;:34;6393:7;6367:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6335:8;:80::i;:::-;6433:4;6426:11;;6230:215;;;;:::o;14431:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;20069:110::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20162:9:::1;20146:13;;:25;;;;;;;;;;;;;;;;;;20069:110:::0;:::o;20313:137::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20412:7:::1;20403:6;;:16;;;;;;;;;;;;;;;;;;20437:5;20430:4;;:12;;;;;;;;;;;;;;;;;;20313:137:::0;;:::o;13579:26::-;;;;;;;;;;;;;:::o;13614:27::-;;;;:::o;13648:29::-;;;;:::o;20940:109::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21035:6:::1;21026;:15;;;;:::i;:::-;21012:11;:29;;;;20940:109:::0;:::o;13549:23::-;;;;;;;;;;;;;:::o;20191:114::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20288:9:::1;20270:15;;:27;;;;;;;;;;;;;;;;;;20191:114:::0;:::o;3872:127::-;3946:7;3973:9;:18;3983:7;3973:18;;;;;;;;;;;;;;;;3966:25;;3872:127;;;:::o;12152:94::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12217:21:::1;12235:1;12217:9;:21::i;:::-;12152:94::o:0;14217:33::-;;;;;;;;;;;;;;;;;;;:::o;22161:166::-;22213:4;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22244:12:::1;22230:11;:26;;;;22285:12;22267:15;:30;;;;22315:4;22308:11;;22161:166:::0;:::o;13853:73::-;;;;;;;;;;;;;:::o;19315:274::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19402:14:::1;;;;;;;;;;;19401:15;19393:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19471:4;19454:14;;:21;;;;;;;;;;;;;;;;;;19500:4;19486:11;;:18;;;;;;;;;;;;;;;;;;19530:12;19515;:27;;;;19566:15;19553:10;:28;;;;19315:274:::0;:::o;13741:44::-;;;;:::o;21186:181::-;21288:13;;;;;;;;;;;21274:27;;:10;:27;;;21265:37;;;;;;21320:12;21313:29;;;21343:7;:5;:7::i;:::-;21352:6;21313:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21186:181;;:::o;11929:87::-;11975:7;12002:6;;;;;;;;;;;11995:13;;11929:87;:::o;2800:104::-;2856:13;2889:7;2882:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:104;:::o;19197:110::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19289:10:::1;19273:13;:26;;;;19197:110:::0;:::o;21375:151::-;21456:13;;;;;;;;;;;21442:27;;:10;:27;;;21433:37;;;;;;21481;21508:9;21489:7;:5;:7::i;:::-;21481:26;;;;:37;;;;:::i;:::-;21375:151;:::o;6948:377::-;7041:4;7058:24;7085:11;:25;7097:12;:10;:12::i;:::-;7085:25;;;;;;;;;;;;;;;:34;7111:7;7085:34;;;;;;;;;;;;;;;;7058:61;;7158:15;7138:16;:35;;7130:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7226:67;7235:12;:10;:12::i;:::-;7249:7;7277:15;7258:16;:34;;;;:::i;:::-;7226:8;:67::i;:::-;7313:4;7306:11;;;6948:377;;;;:::o;13489:19::-;;;;;;;;;;;;;:::o;4212:175::-;4298:4;4315:42;4325:12;:10;:12::i;:::-;4339:9;4350:6;4315:9;:42::i;:::-;4375:4;4368:11;;4212:175;;;;:::o;13792:48::-;;;;:::o;21061:117::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21164:6:::1;21155;:15;;;;:::i;:::-;21137;:33;;;;21061:117:::0;:::o;14375:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4450:151::-;4539:7;4566:11;:18;4578:5;4566:18;;;;;;;;;;;;;;;:27;4585:7;4566:27;;;;;;;;;;;;;;;;4559:34;;4450:151;;;;:::o;19096:93::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19176:5:::1;19162:11;;:19;;;;;;;;;;;;;;;;;;19096:93:::0;:::o;20795:133::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20915:5:::1;20886:16;:26;20903:8;20886:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20795:133:::0;;:::o;19597:220::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19712:41:::1;;;;;;;;19718:10;19712:41;;;;19730:10;19712:41;;;;19742:10;19712:41;;::::0;19704:5:::1;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;19799:10;19786;19773;:23;;;;:::i;:::-;:36;;;;:::i;:::-;19764:6;:45;;;;19597:220:::0;;;:::o;12254:192::-;12075:12;:10;:12::i;:::-;12064:23;;:7;:5;:7::i;:::-;:23;;;12056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12363:1:::1;12343:22;;:8;:22;;;;12335:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12419:19;12429:8;12419:9;:19::i;:::-;12254:192:::0;:::o;14257:37::-;;;;;;;;;;;;;;;;;;;:::o;13461:21::-;;;;;;;;;;;;;:::o;297:98::-;350:7;377:10;370:17;;297:98;:::o;10304:346::-;10423:1;10406:19;;:5;:19;;;;10398:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10504:1;10485:21;;:7;:21;;;;10477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10588:6;10558:11;:18;10570:5;10558:18;;;;;;;;;;;;;;;:27;10577:7;10558:27;;;;;;;;;;;;;;;:36;;;;10626:7;10610:32;;10619:5;10610:32;;;10635:6;10610:32;;;;;;:::i;:::-;;;;;;;;10304:346;;;:::o;15185:1572::-;15301:1;15292:6;:10;15284:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15368:5;:13;15374:6;15368:13;;;;;;;;;;;;;;;;;;;;;;;;;15367:14;:35;;;;;15386:5;:16;15392:9;15386:16;;;;;;;;;;;;;;;;;;;;;;;;;15385:17;15367:35;15359:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15475:16;:24;15492:6;15475:24;;;;;;;;;;;;;;;;;;;;;;;;;15474:25;:57;;;;;15504:16;:27;15521:9;15504:27;;;;;;;;;;;;;;;;;;;;;;;;;15503:28;15474:57;:70;;;;;15536:8;;;;;;;;;;;15535:9;15474:70;15471:588;;;15568:14;;;;;;;;;;;15560:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15655:12;15642:10;;15627:12;;:25;;;;:::i;:::-;:40;15624:182;;;15703:4;;;;;;;;;;;15690:17;;:9;:17;;;15687:45;;15728:4;15709:5;:16;15715:9;15709:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15687:45;15764:4;;;;;;;;;;;15754:14;;:6;:14;;;15751:39;;15786:4;15770:5;:13;15776:6;15770:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15751:39;15624:182;15838:11;;15828:6;:21;;15820:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15914:4;;;;;;;;;;;15901:17;;:9;:17;;;15898:150;;15979:15;;15969:6;15946:20;15956:9;15946;:20::i;:::-;:29;;;;:::i;:::-;:48;;15938:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15898:150;15471:588;16071:11;16178:8;;;;;;;;;;;:36;;;;16190:16;:24;16207:6;16190:24;;;;;;;;;;;;;;;;;;;;;;;;;16178:36;:67;;;;16218:16;:27;16235:9;16218:27;;;;;;;;;;;;;;;;;;;;;;;;;16178:67;16174:257;;;16253:1;16247:7;;16174:257;;;16335:4;;;;;;;;;;;16322:17;;:9;:17;;;16319:100;;;16369:3;16356:10;;16347:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16341:31;;16319:100;;;16416:3;16407:6;;16398;:15;;;;:::i;:::-;:21;;;;:::i;:::-;16392:27;;16319:100;16174:257;16552:11;;;;;;;;;;;:24;;;;;16568:8;;;;;;;;;;;16567:9;16552:24;:42;;;;;16590:4;;;;;;;;;;;16580:14;;:6;:14;;;;16552:42;:53;;;;;16604:1;16598:3;:7;16552:53;16548:72;;;16607:13;:11;:13::i;:::-;16548:72;16633:48;16649:6;16657:9;16677:3;16668:6;:12;;;;:::i;:::-;16633:15;:48::i;:::-;16701:1;16695:3;:7;16692:55;;;16704:43;16720:6;16736:4;16743:3;16704:15;:43::i;:::-;16692:55;15273:1484;15185:1572;;;:::o;18177:400::-;18243:21;18281:1;18267:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18243:40;;18312:4;18294;18299:1;18294:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18338:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18328:4;18333:1;18328:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18364:53;18381:4;18396:6;;;;;;;;;;;18405:11;18364:8;:53::i;:::-;18456:6;;;;;;;;;;;:57;;;18514:11;18527:1;18530:4;18544;18551:15;18456:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18232:345;18177:400;:::o;11374:317::-;11489:6;11464:21;:31;;11456:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11543:12;11561:9;:14;;11583:6;11561:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11542:52;;;11613:7;11605:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11445:246;11374:317;;:::o;12454:173::-;12510:16;12529:6;;;;;;;;;;;12510:25;;12555:8;12546:6;;:17;;;;;;;;;;;;;;;;;;12610:8;12579:40;;12600:8;12579:40;;;;;;;;;;;;12499:128;12454:173;:::o;16765:1402::-;14516:8;;;;;;;;;;;14511:104;;14552:4;14541:8;;:15;;;;;;;;;;;;;;;;;;16814:23:::1;16840:24;16858:4;16840:9;:24::i;:::-;16814:50;;16898:13;;16879:15;:32;16875:1285;;16985:19;17020:1;17007:10;;:14;;;;:::i;:::-;16985:36;;17036:32;17111:11;17089:9;:19;;;17071:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;17036:86;;17137:14;17172:24;17154:15;:42;;;;:::i;:::-;17137:59;;17217:22;17242:21;17217:46;;17284:24;17301:6;17284:16;:24::i;:::-;17329:20;17376:14;17352:21;:38;;;;:::i;:::-;17329:61;;17405:19;17456:9;:19;;;17442:11;:33;;;;:::i;:::-;17426:12;:50;;;;:::i;:::-;17405:71;;17491:29;17537:9;:19;;;17523:11;:33;;;;:::i;:::-;17491:65;;17604:1;17580:21;:25;17577:170;;;17670:61;17683:24;17709:21;17670:12;:61::i;:::-;17577:170;17767:20;17808:9;:19;;;17804:1;17790:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17767:60;;17860:1;17845:12;:16;17842:101;;;17881:46;17914:12;17889:13;;;;;;;;;;;17881:32;;;;:46;;;;:::i;:::-;17842:101;17971:20;18012:9;:19;;;18008:1;17994:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17971:60;;18064:1;18049:12;:16;18046:103;;;18085:48;18120:12;18093:15;;;;;;;;;;;18085:34;;;;:48;;;;:::i;:::-;18046:103;16913:1247;;;;;;;;;16875:1285;16803:1364;14598:5:::0;14587:8;;:16;;;;;;;;;;;;;;;;;;14511:104;16765:1402::o;7815:604::-;7939:1;7921:20;;:6;:20;;;;7913:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8023:1;8002:23;;:9;:23;;;;7994:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8078:47;8099:6;8107:9;8118:6;8078:20;:47::i;:::-;8138:21;8162:9;:17;8172:6;8162:17;;;;;;;;;;;;;;;;8138:41;;8215:6;8198:13;:23;;8190:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8311:6;8295:13;:22;;;;:::i;:::-;8275:9;:17;8285:6;8275:17;;;;;;;;;;;;;;;:42;;;;8352:6;8328:9;:20;8338:9;8328:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8393:9;8376:35;;8385:6;8376:35;;;8404:6;8376:35;;;;;;:::i;:::-;;;;;;;;7902:517;7815:604;;;:::o;18585:503::-;18733:53;18750:4;18765:6;;;;;;;;;;;18774:11;18733:8;:53::i;:::-;18829:6;;;;;;;;;;;:22;;;18859:9;18892:4;18912:11;18938:1;18981;19024:15;;;;;;;;;;;19054;18829:251;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18585:503;;:::o;11253:92::-;;;;:::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:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:122;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:619::-;2509:6;2517;2525;2574:2;2562:9;2553:7;2549:23;2545:32;2542:119;;;2580:79;;:::i;:::-;2542:119;2700:1;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;:::i;:::-;2715:63;;2671:117;2827:2;2853:53;2898:7;2889:6;2878:9;2874:22;2853:53;:::i;:::-;2843:63;;2798:118;2955:2;2981:53;3026:7;3017:6;3006:9;3002:22;2981:53;:::i;:::-;2971:63;;2926:118;2432:619;;;;;:::o;3057:126::-;3094:7;3134:42;3127:5;3123:54;3112:65;;3057:126;;;:::o;3189:96::-;3226:7;3255:24;3273:5;3255:24;:::i;:::-;3244:35;;3189:96;;;:::o;3291:122::-;3364:24;3382:5;3364:24;:::i;:::-;3357:5;3354:35;3344:63;;3403:1;3400;3393:12;3344:63;3291:122;:::o;3419:139::-;3465:5;3503:6;3490:20;3481:29;;3519:33;3546:5;3519:33;:::i;:::-;3419:139;;;;:::o;3564:474::-;3632:6;3640;3689:2;3677:9;3668:7;3664:23;3660:32;3657:119;;;3695:79;;:::i;:::-;3657:119;3815:1;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;:::i;:::-;3830:63;;3786:117;3942:2;3968:53;4013:7;4004:6;3993:9;3989:22;3968:53;:::i;:::-;3958:63;;3913:118;3564:474;;;;;:::o;4044:90::-;4078:7;4121:5;4114:13;4107:21;4096:32;;4044:90;;;:::o;4140:109::-;4221:21;4236:5;4221:21;:::i;:::-;4216:3;4209:34;4140:109;;:::o;4255:210::-;4342:4;4380:2;4369:9;4365:18;4357:26;;4393:65;4455:1;4444:9;4440:17;4431:6;4393:65;:::i;:::-;4255:210;;;;:::o;4471:118::-;4558:24;4576:5;4558:24;:::i;:::-;4553:3;4546:37;4471:118;;:::o;4595:222::-;4688:4;4726:2;4715:9;4711:18;4703:26;;4739:71;4807:1;4796:9;4792:17;4783:6;4739:71;:::i;:::-;4595:222;;;;:::o;4823:619::-;4900:6;4908;4916;4965:2;4953:9;4944:7;4940:23;4936:32;4933:119;;;4971:79;;:::i;:::-;4933:119;5091:1;5116:53;5161:7;5152:6;5141:9;5137:22;5116:53;:::i;:::-;5106:63;;5062:117;5218:2;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5189:118;5346:2;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5317:118;4823:619;;;;;:::o;5448:116::-;5518:21;5533:5;5518:21;:::i;:::-;5511:5;5508:32;5498:60;;5554:1;5551;5544:12;5498:60;5448:116;:::o;5570:133::-;5613:5;5651:6;5638:20;5629:29;;5667:30;5691:5;5667:30;:::i;:::-;5570:133;;;;:::o;5709:468::-;5774:6;5782;5831:2;5819:9;5810:7;5806:23;5802:32;5799:119;;;5837:79;;:::i;:::-;5799:119;5957:1;5982:53;6027:7;6018:6;6007:9;6003:22;5982:53;:::i;:::-;5972:63;;5928:117;6084:2;6110:50;6152:7;6143:6;6132:9;6128:22;6110:50;:::i;:::-;6100:60;;6055:115;5709:468;;;;;:::o;6183:86::-;6218:7;6258:4;6251:5;6247:16;6236:27;;6183:86;;;:::o;6275:112::-;6358:22;6374:5;6358:22;:::i;:::-;6353:3;6346:35;6275:112;;:::o;6393:214::-;6482:4;6520:2;6509:9;6505:18;6497:26;;6533:67;6597:1;6586:9;6582:17;6573:6;6533:67;:::i;:::-;6393:214;;;;:::o;6613:117::-;6722:1;6719;6712:12;6736:180;6784:77;6781:1;6774:88;6881:4;6878:1;6871:15;6905:4;6902:1;6895:15;6922:281;7005:27;7027:4;7005:27;:::i;:::-;6997:6;6993:40;7135:6;7123:10;7120:22;7099:18;7087:10;7084:34;7081:62;7078:88;;;7146:18;;:::i;:::-;7078:88;7186:10;7182:2;7175:22;6965:238;6922:281;;:::o;7209:129::-;7243:6;7270:20;;:::i;:::-;7260:30;;7299:33;7327:4;7319:6;7299:33;:::i;:::-;7209:129;;;:::o;7344:311::-;7421:4;7511:18;7503:6;7500:30;7497:56;;;7533:18;;:::i;:::-;7497:56;7583:4;7575:6;7571:17;7563:25;;7643:4;7637;7633:15;7625:23;;7344:311;;;:::o;7661:117::-;7770:1;7767;7760:12;7801:710;7897:5;7922:81;7938:64;7995:6;7938:64;:::i;:::-;7922:81;:::i;:::-;7913:90;;8023:5;8052:6;8045:5;8038:21;8086:4;8079:5;8075:16;8068:23;;8139:4;8131:6;8127:17;8119:6;8115:30;8168:3;8160:6;8157:15;8154:122;;;8187:79;;:::i;:::-;8154:122;8302:6;8285:220;8319:6;8314:3;8311:15;8285:220;;;8394:3;8423:37;8456:3;8444:10;8423:37;:::i;:::-;8418:3;8411:50;8490:4;8485:3;8481:14;8474:21;;8361:144;8345:4;8340:3;8336:14;8329:21;;8285:220;;;8289:21;7903:608;;7801:710;;;;;:::o;8534:370::-;8605:5;8654:3;8647:4;8639:6;8635:17;8631:27;8621:122;;8662:79;;:::i;:::-;8621:122;8779:6;8766:20;8804:94;8894:3;8886:6;8879:4;8871:6;8867:17;8804:94;:::i;:::-;8795:103;;8611:293;8534:370;;;;:::o;8910:539::-;8994:6;9043:2;9031:9;9022:7;9018:23;9014:32;9011:119;;;9049:79;;:::i;:::-;9011:119;9197:1;9186:9;9182:17;9169:31;9227:18;9219:6;9216:30;9213:117;;;9249:79;;:::i;:::-;9213:117;9354:78;9424:7;9415:6;9404:9;9400:22;9354:78;:::i;:::-;9344:88;;9140:302;8910:539;;;;:::o;9455:329::-;9514:6;9563:2;9551:9;9542:7;9538:23;9534:32;9531:119;;;9569:79;;:::i;:::-;9531:119;9689:1;9714:53;9759:7;9750:6;9739:9;9735:22;9714:53;:::i;:::-;9704:63;;9660:117;9455:329;;;;:::o;9790:111::-;9842:7;9871:24;9889:5;9871:24;:::i;:::-;9860:35;;9790:111;;;:::o;9907:152::-;9995:39;10028:5;9995:39;:::i;:::-;9988:5;9985:50;9975:78;;10049:1;10046;10039:12;9975:78;9907:152;:::o;10065:169::-;10126:5;10164:6;10151:20;10142:29;;10180:48;10222:5;10180:48;:::i;:::-;10065:169;;;;:::o;10240:504::-;10323:6;10331;10380:2;10368:9;10359:7;10355:23;10351:32;10348:119;;;10386:79;;:::i;:::-;10348:119;10506:1;10531:68;10591:7;10582:6;10571:9;10567:22;10531:68;:::i;:::-;10521:78;;10477:132;10648:2;10674:53;10719:7;10710:6;10699:9;10695:22;10674:53;:::i;:::-;10664:63;;10619:118;10240:504;;;;;:::o;10750:329::-;10809:6;10858:2;10846:9;10837:7;10833:23;10829:32;10826:119;;;10864:79;;:::i;:::-;10826:119;10984:1;11009:53;11054:7;11045:6;11034:9;11030:22;11009:53;:::i;:::-;10999:63;;10955:117;10750:329;;;;:::o;11085:442::-;11234:4;11272:2;11261:9;11257:18;11249:26;;11285:71;11353:1;11342:9;11338:17;11329:6;11285:71;:::i;:::-;11366:72;11434:2;11423:9;11419:18;11410:6;11366:72;:::i;:::-;11448;11516:2;11505:9;11501:18;11492:6;11448:72;:::i;:::-;11085:442;;;;;;:::o;11533:474::-;11601:6;11609;11658:2;11646:9;11637:7;11633:23;11629:32;11626:119;;;11664:79;;:::i;:::-;11626:119;11784:1;11809:53;11854:7;11845:6;11834:9;11830:22;11809:53;:::i;:::-;11799:63;;11755:117;11911:2;11937:53;11982:7;11973:6;11962:9;11958:22;11937:53;:::i;:::-;11927:63;;11882:118;11533:474;;;;;:::o;12013:323::-;12069:6;12118:2;12106:9;12097:7;12093:23;12089:32;12086:119;;;12124:79;;:::i;:::-;12086:119;12244:1;12269:50;12311:7;12302:6;12291:9;12287:22;12269:50;:::i;:::-;12259:60;;12215:114;12013:323;;;;:::o;12342:60::-;12370:3;12391:5;12384:12;;12342:60;;;:::o;12408:142::-;12458:9;12491:53;12509:34;12518:24;12536:5;12518:24;:::i;:::-;12509:34;:::i;:::-;12491:53;:::i;:::-;12478:66;;12408:142;;;:::o;12556:126::-;12606:9;12639:37;12670:5;12639:37;:::i;:::-;12626:50;;12556:126;;;:::o;12688:141::-;12753:9;12786:37;12817:5;12786:37;:::i;:::-;12773:50;;12688:141;;;:::o;12835:161::-;12937:52;12983:5;12937:52;:::i;:::-;12932:3;12925:65;12835:161;;:::o;13002:252::-;13110:4;13148:2;13137:9;13133:18;13125:26;;13161:86;13244:1;13233:9;13229:17;13220:6;13161:86;:::i;:::-;13002:252;;;;:::o;13260:180::-;13308:77;13305:1;13298:88;13405:4;13402:1;13395:15;13429:4;13426:1;13419:15;13446:320;13490:6;13527:1;13521:4;13517:12;13507:22;;13574:1;13568:4;13564:12;13595:18;13585:81;;13651:4;13643:6;13639:17;13629:27;;13585:81;13713:2;13705:6;13702:14;13682:18;13679:38;13676:84;;;13732:18;;:::i;:::-;13676:84;13497:269;13446:320;;;:::o;13772:182::-;13912:34;13908:1;13900:6;13896:14;13889:58;13772:182;:::o;13960:366::-;14102:3;14123:67;14187:2;14182:3;14123:67;:::i;:::-;14116:74;;14199:93;14288:3;14199:93;:::i;:::-;14317:2;14312:3;14308:12;14301:19;;13960:366;;;:::o;14332:419::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14585:9;14579:4;14575:20;14571:1;14560:9;14556:17;14549:47;14613:131;14739:4;14613:131;:::i;:::-;14605:139;;14332:419;;;:::o;14757:180::-;14805:77;14802:1;14795:88;14902:4;14899:1;14892:15;14926:4;14923:1;14916:15;14943:305;14983:3;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15036:20;15054:1;15036:20;:::i;:::-;15031:25;;15190:1;15122:66;15118:74;15115:1;15112:81;15109:107;;;15196:18;;:::i;:::-;15109:107;15240:1;15237;15233:9;15226:16;;14943:305;;;;:::o;15254:227::-;15394:34;15390:1;15382:6;15378:14;15371:58;15463:10;15458:2;15450:6;15446:15;15439:35;15254:227;:::o;15487:366::-;15629:3;15650:67;15714:2;15709:3;15650:67;:::i;:::-;15643:74;;15726:93;15815:3;15726:93;:::i;:::-;15844:2;15839:3;15835:12;15828:19;;15487:366;;;:::o;15859:419::-;16025:4;16063:2;16052:9;16048:18;16040:26;;16112:9;16106:4;16102:20;16098:1;16087:9;16083:17;16076:47;16140:131;16266:4;16140:131;:::i;:::-;16132:139;;15859:419;;;:::o;16284:191::-;16324:4;16344:20;16362:1;16344:20;:::i;:::-;16339:25;;16378:20;16396:1;16378:20;:::i;:::-;16373:25;;16417:1;16414;16411:8;16408:34;;;16422:18;;:::i;:::-;16408:34;16467:1;16464;16460:9;16452:17;;16284:191;;;;:::o;16481:348::-;16521:7;16544:20;16562:1;16544:20;:::i;:::-;16539:25;;16578:20;16596:1;16578:20;:::i;:::-;16573:25;;16766:1;16698:66;16694:74;16691:1;16688:81;16683:1;16676:9;16669:17;16665:105;16662:131;;;16773:18;;:::i;:::-;16662:131;16821:1;16818;16814:9;16803:20;;16481:348;;;;:::o;16835:180::-;16883:77;16880:1;16873:88;16980:4;16977:1;16970:15;17004:4;17001:1;16994:15;17021:185;17061:1;17078:20;17096:1;17078:20;:::i;:::-;17073:25;;17112:20;17130:1;17112:20;:::i;:::-;17107:25;;17151:1;17141:35;;17156:18;;:::i;:::-;17141:35;17198:1;17195;17191:9;17186:14;;17021:185;;;;:::o;17212:180::-;17260:77;17257:1;17250:88;17357:4;17354:1;17347:15;17381:4;17378:1;17371:15;17398:233;17437:3;17460:24;17478:5;17460:24;:::i;:::-;17451:33;;17506:66;17499:5;17496:77;17493:103;;;17576:18;;:::i;:::-;17493:103;17623:1;17616:5;17612:13;17605:20;;17398:233;;;:::o;17637:172::-;17777:24;17773:1;17765:6;17761:14;17754:48;17637:172;:::o;17815:366::-;17957:3;17978:67;18042:2;18037:3;17978:67;:::i;:::-;17971:74;;18054:93;18143:3;18054:93;:::i;:::-;18172:2;18167:3;18163:12;18156:19;;17815:366;;;:::o;18187:419::-;18353:4;18391:2;18380:9;18376:18;18368:26;;18440:9;18434:4;18430:20;18426:1;18415:9;18411:17;18404:47;18468:131;18594:4;18468:131;:::i;:::-;18460:139;;18187:419;;;:::o;18612:332::-;18733:4;18771:2;18760:9;18756:18;18748:26;;18784:71;18852:1;18841:9;18837:17;18828:6;18784:71;:::i;:::-;18865:72;18933:2;18922:9;18918:18;18909:6;18865:72;:::i;:::-;18612:332;;;;;:::o;18950:137::-;19004:5;19035:6;19029:13;19020:22;;19051:30;19075:5;19051:30;:::i;:::-;18950:137;;;;:::o;19093:345::-;19160:6;19209:2;19197:9;19188:7;19184:23;19180:32;19177:119;;;19215:79;;:::i;:::-;19177:119;19335:1;19360:61;19413:7;19404:6;19393:9;19389:22;19360:61;:::i;:::-;19350:71;;19306:125;19093:345;;;;:::o;19444:224::-;19584:34;19580:1;19572:6;19568:14;19561:58;19653:7;19648:2;19640:6;19636:15;19629:32;19444:224;:::o;19674:366::-;19816:3;19837:67;19901:2;19896:3;19837:67;:::i;:::-;19830:74;;19913:93;20002:3;19913:93;:::i;:::-;20031:2;20026:3;20022:12;20015:19;;19674:366;;;:::o;20046:419::-;20212:4;20250:2;20239:9;20235:18;20227:26;;20299:9;20293:4;20289:20;20285:1;20274:9;20270:17;20263:47;20327:131;20453:4;20327:131;:::i;:::-;20319:139;;20046:419;;;:::o;20471:225::-;20611:34;20607:1;20599:6;20595:14;20588:58;20680:8;20675:2;20667:6;20663:15;20656:33;20471:225;:::o;20702:366::-;20844:3;20865:67;20929:2;20924:3;20865:67;:::i;:::-;20858:74;;20941:93;21030:3;20941:93;:::i;:::-;21059:2;21054:3;21050:12;21043:19;;20702:366;;;:::o;21074:419::-;21240:4;21278:2;21267:9;21263:18;21255:26;;21327:9;21321:4;21317:20;21313:1;21302:9;21298:17;21291:47;21355:131;21481:4;21355:131;:::i;:::-;21347:139;;21074:419;;;:::o;21499:223::-;21639:34;21635:1;21627:6;21623:14;21616:58;21708:6;21703:2;21695:6;21691:15;21684:31;21499:223;:::o;21728:366::-;21870:3;21891:67;21955:2;21950:3;21891:67;:::i;:::-;21884:74;;21967:93;22056:3;21967:93;:::i;:::-;22085:2;22080:3;22076:12;22069:19;;21728:366;;;:::o;22100:419::-;22266:4;22304:2;22293:9;22289:18;22281:26;;22353:9;22347:4;22343:20;22339:1;22328:9;22324:17;22317:47;22381:131;22507:4;22381:131;:::i;:::-;22373:139;;22100:419;;;:::o;22525:221::-;22665:34;22661:1;22653:6;22649:14;22642:58;22734:4;22729:2;22721:6;22717:15;22710:29;22525:221;:::o;22752:366::-;22894:3;22915:67;22979:2;22974:3;22915:67;:::i;:::-;22908:74;;22991:93;23080:3;22991:93;:::i;:::-;23109:2;23104:3;23100:12;23093:19;;22752:366;;;:::o;23124:419::-;23290:4;23328:2;23317:9;23313:18;23305:26;;23377:9;23371:4;23367:20;23363:1;23352:9;23348:17;23341:47;23405:131;23531:4;23405:131;:::i;:::-;23397:139;;23124:419;;;:::o;23549:228::-;23689:34;23685:1;23677:6;23673:14;23666:58;23758:11;23753:2;23745:6;23741:15;23734:36;23549:228;:::o;23783:366::-;23925:3;23946:67;24010:2;24005:3;23946:67;:::i;:::-;23939:74;;24022:93;24111:3;24022:93;:::i;:::-;24140:2;24135:3;24131:12;24124:19;;23783:366;;;:::o;24155:419::-;24321:4;24359:2;24348:9;24344:18;24336:26;;24408:9;24402:4;24398:20;24394:1;24383:9;24379:17;24372:47;24436:131;24562:4;24436:131;:::i;:::-;24428:139;;24155:419;;;:::o;24580:175::-;24720:27;24716:1;24708:6;24704:14;24697:51;24580:175;:::o;24761:366::-;24903:3;24924:67;24988:2;24983:3;24924:67;:::i;:::-;24917:74;;25000:93;25089:3;25000:93;:::i;:::-;25118:2;25113:3;25109:12;25102:19;;24761:366;;;:::o;25133:419::-;25299:4;25337:2;25326:9;25322:18;25314:26;;25386:9;25380:4;25376:20;25372:1;25361:9;25357:17;25350:47;25414:131;25540:4;25414:131;:::i;:::-;25406:139;;25133:419;;;:::o;25558:172::-;25698:24;25694:1;25686:6;25682:14;25675:48;25558:172;:::o;25736:366::-;25878:3;25899:67;25963:2;25958:3;25899:67;:::i;:::-;25892:74;;25975:93;26064:3;25975:93;:::i;:::-;26093:2;26088:3;26084:12;26077:19;;25736:366;;;:::o;26108:419::-;26274:4;26312:2;26301:9;26297:18;26289:26;;26361:9;26355:4;26351:20;26347:1;26336:9;26332:17;26325:47;26389:131;26515:4;26389:131;:::i;:::-;26381:139;;26108:419;;;:::o;26533:179::-;26673:31;26669:1;26661:6;26657:14;26650:55;26533:179;:::o;26718:366::-;26860:3;26881:67;26945:2;26940:3;26881:67;:::i;:::-;26874:74;;26957:93;27046:3;26957:93;:::i;:::-;27075:2;27070:3;27066:12;27059:19;;26718:366;;;:::o;27090:419::-;27256:4;27294:2;27283:9;27279:18;27271:26;;27343:9;27337:4;27333:20;27329:1;27318:9;27314:17;27307:47;27371:131;27497:4;27371:131;:::i;:::-;27363:139;;27090:419;;;:::o;27515:220::-;27655:34;27651:1;27643:6;27639:14;27632:58;27724:3;27719:2;27711:6;27707:15;27700:28;27515:220;:::o;27741:366::-;27883:3;27904:67;27968:2;27963:3;27904:67;:::i;:::-;27897:74;;27980:93;28069:3;27980:93;:::i;:::-;28098:2;28093:3;28089:12;28082:19;;27741:366;;;:::o;28113:419::-;28279:4;28317:2;28306:9;28302:18;28294:26;;28366:9;28360:4;28356:20;28352:1;28341:9;28337:17;28330:47;28394:131;28520:4;28394:131;:::i;:::-;28386:139;;28113:419;;;:::o;28538:143::-;28595:5;28626:6;28620:13;28611:22;;28642:33;28669:5;28642:33;:::i;:::-;28538:143;;;;:::o;28687:351::-;28757:6;28806:2;28794:9;28785:7;28781:23;28777:32;28774:119;;;28812:79;;:::i;:::-;28774:119;28932:1;28957:64;29013:7;29004:6;28993:9;28989:22;28957:64;:::i;:::-;28947:74;;28903:128;28687:351;;;;:::o;29044:85::-;29089:7;29118:5;29107:16;;29044:85;;;:::o;29135:158::-;29193:9;29226:61;29244:42;29253:32;29279:5;29253:32;:::i;:::-;29244:42;:::i;:::-;29226:61;:::i;:::-;29213:74;;29135:158;;;:::o;29299:147::-;29394:45;29433:5;29394:45;:::i;:::-;29389:3;29382:58;29299:147;;:::o;29452:114::-;29519:6;29553:5;29547:12;29537:22;;29452:114;;;:::o;29572:184::-;29671:11;29705:6;29700:3;29693:19;29745:4;29740:3;29736:14;29721:29;;29572:184;;;;:::o;29762:132::-;29829:4;29852:3;29844:11;;29882:4;29877:3;29873:14;29865:22;;29762:132;;;:::o;29900:108::-;29977:24;29995:5;29977:24;:::i;:::-;29972:3;29965:37;29900:108;;:::o;30014:179::-;30083:10;30104:46;30146:3;30138:6;30104:46;:::i;:::-;30182:4;30177:3;30173:14;30159:28;;30014:179;;;;:::o;30199:113::-;30269:4;30301;30296:3;30292:14;30284:22;;30199:113;;;:::o;30348:732::-;30467:3;30496:54;30544:5;30496:54;:::i;:::-;30566:86;30645:6;30640:3;30566:86;:::i;:::-;30559:93;;30676:56;30726:5;30676:56;:::i;:::-;30755:7;30786:1;30771:284;30796:6;30793:1;30790:13;30771:284;;;30872:6;30866:13;30899:63;30958:3;30943:13;30899:63;:::i;:::-;30892:70;;30985:60;31038:6;30985:60;:::i;:::-;30975:70;;30831:224;30818:1;30815;30811:9;30806:14;;30771:284;;;30775:14;31071:3;31064:10;;30472:608;;;30348:732;;;;:::o;31086:831::-;31349:4;31387:3;31376:9;31372:19;31364:27;;31401:71;31469:1;31458:9;31454:17;31445:6;31401:71;:::i;:::-;31482:80;31558:2;31547:9;31543:18;31534:6;31482:80;:::i;:::-;31609:9;31603:4;31599:20;31594:2;31583:9;31579:18;31572:48;31637:108;31740:4;31731:6;31637:108;:::i;:::-;31629:116;;31755:72;31823:2;31812:9;31808:18;31799:6;31755:72;:::i;:::-;31837:73;31905:3;31894:9;31890:19;31881:6;31837:73;:::i;:::-;31086:831;;;;;;;;:::o;31923:179::-;32063:31;32059:1;32051:6;32047:14;32040:55;31923:179;:::o;32108:366::-;32250:3;32271:67;32335:2;32330:3;32271:67;:::i;:::-;32264:74;;32347:93;32436:3;32347:93;:::i;:::-;32465:2;32460:3;32456:12;32449:19;;32108:366;;;:::o;32480:419::-;32646:4;32684:2;32673:9;32669:18;32661:26;;32733:9;32727:4;32723:20;32719:1;32708:9;32704:17;32697:47;32761:131;32887:4;32761:131;:::i;:::-;32753:139;;32480:419;;;:::o;32905:147::-;33006:11;33043:3;33028:18;;32905:147;;;;:::o;33058:114::-;;:::o;33178:398::-;33337:3;33358:83;33439:1;33434:3;33358:83;:::i;:::-;33351:90;;33450:93;33539:3;33450:93;:::i;:::-;33568:1;33563:3;33559:11;33552:18;;33178:398;;;:::o;33582:379::-;33766:3;33788:147;33931:3;33788:147;:::i;:::-;33781:154;;33952:3;33945:10;;33582:379;;;:::o;33967:245::-;34107:34;34103:1;34095:6;34091:14;34084:58;34176:28;34171:2;34163:6;34159:15;34152:53;33967:245;:::o;34218:366::-;34360:3;34381:67;34445:2;34440:3;34381:67;:::i;:::-;34374:74;;34457:93;34546:3;34457:93;:::i;:::-;34575:2;34570:3;34566:12;34559:19;;34218:366;;;:::o;34590:419::-;34756:4;34794:2;34783:9;34779:18;34771:26;;34843:9;34837:4;34833:20;34829:1;34818:9;34814:17;34807:47;34871:131;34997:4;34871:131;:::i;:::-;34863:139;;34590:419;;;:::o;35015:224::-;35155:34;35151:1;35143:6;35139:14;35132:58;35224:7;35219:2;35211:6;35207:15;35200:32;35015:224;:::o;35245:366::-;35387:3;35408:67;35472:2;35467:3;35408:67;:::i;:::-;35401:74;;35484:93;35573:3;35484:93;:::i;:::-;35602:2;35597:3;35593:12;35586:19;;35245:366;;;:::o;35617:419::-;35783:4;35821:2;35810:9;35806:18;35798:26;;35870:9;35864:4;35860:20;35856:1;35845:9;35841:17;35834:47;35898:131;36024:4;35898:131;:::i;:::-;35890:139;;35617:419;;;:::o;36042:222::-;36182:34;36178:1;36170:6;36166:14;36159:58;36251:5;36246:2;36238:6;36234:15;36227:30;36042:222;:::o;36270:366::-;36412:3;36433:67;36497:2;36492:3;36433:67;:::i;:::-;36426:74;;36509:93;36598:3;36509:93;:::i;:::-;36627:2;36622:3;36618:12;36611:19;;36270:366;;;:::o;36642:419::-;36808:4;36846:2;36835:9;36831:18;36823:26;;36895:9;36889:4;36885:20;36881:1;36870:9;36866:17;36859:47;36923:131;37049:4;36923:131;:::i;:::-;36915:139;;36642:419;;;:::o;37067:225::-;37207:34;37203:1;37195:6;37191:14;37184:58;37276:8;37271:2;37263:6;37259:15;37252:33;37067:225;:::o;37298:366::-;37440:3;37461:67;37525:2;37520:3;37461:67;:::i;:::-;37454:74;;37537:93;37626:3;37537:93;:::i;:::-;37655:2;37650:3;37646:12;37639:19;;37298:366;;;:::o;37670:419::-;37836:4;37874:2;37863:9;37859:18;37851:26;;37923:9;37917:4;37913:20;37909:1;37898:9;37894:17;37887:47;37951:131;38077:4;37951:131;:::i;:::-;37943:139;;37670:419;;;:::o;38095:807::-;38344:4;38382:3;38371:9;38367:19;38359:27;;38396:71;38464:1;38453:9;38449:17;38440:6;38396:71;:::i;:::-;38477:72;38545:2;38534:9;38530:18;38521:6;38477:72;:::i;:::-;38559:80;38635:2;38624:9;38620:18;38611:6;38559:80;:::i;:::-;38649;38725:2;38714:9;38710:18;38701:6;38649:80;:::i;:::-;38739:73;38807:3;38796:9;38792:19;38783:6;38739:73;:::i;:::-;38822;38890:3;38879:9;38875:19;38866:6;38822:73;:::i;:::-;38095:807;;;;;;;;;:::o;38908:143::-;38965:5;38996:6;38990:13;38981:22;;39012:33;39039:5;39012:33;:::i;:::-;38908:143;;;;:::o;39057:663::-;39145:6;39153;39161;39210:2;39198:9;39189:7;39185:23;39181:32;39178:119;;;39216:79;;:::i;:::-;39178:119;39336:1;39361:64;39417:7;39408:6;39397:9;39393:22;39361:64;:::i;:::-;39351:74;;39307:128;39474:2;39500:64;39556:7;39547:6;39536:9;39532:22;39500:64;:::i;:::-;39490:74;;39445:129;39613:2;39639:64;39695:7;39686:6;39675:9;39671:22;39639:64;:::i;:::-;39629:74;;39584:129;39057:663;;;;;:::o

Swarm Source

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