ETH Price: $3,434.27 (-1.51%)

Token

Autism Pass (AAAAAA)
 

Overview

Max Total Supply

1,000 AAAAAA

Holders

143

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5 AAAAAA

Value
$0.00
0x492FE958EC6DaF2a9632090f833f054732Bef7E9
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:
Autism

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-11-14
*/

/*
                Own

                One

                Of

                1000

                Unique

                Autism

                Passes

                With 

                Different

                Traists

                AUTISM PASS

                0xaaaaaa

                $AAAAAA




















































































































































































































                        <0)
                        (  \
                        x
                        8===D




*/

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(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");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


// File contracts/PepeToken.sol



pragma solidity ^0.8.0;


contract Autism is Ownable, ERC20 {
    bool public limited = true;
    uint supply = 1000000000000000000000;
    uint256 public maxHoldingAmount = 169000000000000000000;
    uint256 public minHoldingAmount = 0;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;

    constructor() ERC20("Autism Pass", "AAAAAA") {
        _mint(msg.sender, supply);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function startTrading(address _uniswapV2Pair) external onlyOwner{
        uniswapV2Pair = _uniswapV2Pair;
    }

    function removeLimits() external onlyOwner{
        limited = false;
    }

    function setMaxManual(uint256 _maxHoldingAmount) external onlyOwner {
    
        maxHoldingAmount = _maxHoldingAmount;
       
    }

    function levelUpTheAutism() external onlyOwner{
        maxHoldingAmount = maxHoldingAmount * 2;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

      mapping(uint index => address holder) _holders;
    mapping(address holder => uint index) _holder_index;
    uint public holders_count;

    function get_holders_list(
        uint index,
        uint count
    ) external view returns (uint page_count, address[] memory accounts) {
        if (index >= holders_count) return (0, new address[](0));

        uint end = index + count;
        if (end > holders_count) {
            end = holders_count;
        }
        page_count = end - index;

        accounts = new address[](page_count);
        uint i;
        for (i = index; i < page_count; ++i) {
            accounts[i] = _holders[index + i];
        }
    }

    function add_holder(address value) internal {
        uint index = holders_count++;
        _holders[index] = value;
        _holder_index[value] = index;
    }

    function remove_holder(address value) internal {
        if (holders_count == 0) return;

        uint removingIndex = _holder_index[value];
        if (removingIndex != holders_count - 1) {
            address lastHolder = _holders[holders_count - 1];
            _holders[removingIndex] = lastHolder;
            _holder_index[lastHolder] = removingIndex;
        }

        --holders_count;
        delete _holder_index[value];
        delete _holders[holders_count];
    }

     uint constant MAX_GENS_START = 1000;
    uint public constant GEN_MIN = 1;
    uint public constant gen_max = MAX_GENS_START;
    uint public gen = MAX_GENS_START;
    uint public constant max_breed = 1000;
    mapping(address owner => uint) public counts;
    uint public breed_total_count;
    uint breed_id;


 



    function _transfer_breed_from_to_by_index(
        address account,
        uint index,
        address to
    ) private {
        string memory breed = "";
        
    }

    function transfer_breed_from_to_by_index(uint index, address to) external {
        require(index < counts[msg.sender], "incorrect index");
        _transfer_breed_from_to_by_index(msg.sender, index, to);
    }

    function gen_mode(uint value) private returns (uint) {
        value = (value * gen) / gen_max;
        if (value == 0) value = 1;
        if (gen > GEN_MIN) --gen;
        return value;
    }

    function buy(
        address to,
        uint256 amount
    ) internal    {
        uint last_balance = balanceOf(to);
        uint balance = last_balance + amount;
        uint count = balance /
            (10 ** decimals()) -
            last_balance /
            (10 ** decimals());
        uint i;
        for (i = 0; i < count; ++i) {
            string memory breed = "Breed(++breed_id, gen_mode(max_breed))";
            
        }
      
    }

    function sell(
        address from,
        uint256 amount
    ) internal {
        uint last_balance = balanceOf(from);
        uint balance = last_balance - amount;
        uint count = last_balance /
            (10 ** decimals()) -
            balance /
            (10 ** decimals());
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < count; ++i) {
            if (gen < gen_max) ++gen;
            if (owner_count > 0)
                (from, --owner_count);
        }
        
    }

    function transfer_internal(
        address from,
        address to,
        uint256 amount
    ) internal  {
        uint last_balance_from = balanceOf(from);
        uint balance_from = last_balance_from - amount;
        uint last_balance_to = balanceOf(to);
        uint balance_to = last_balance_to + amount;
      
        uint count_from = last_balance_from /
            (10 ** decimals()) -
            balance_from /
            (10 ** decimals());
        uint count_to = balance_to /
            (10 ** decimals()) -
            last_balance_to /
            (10 ** decimals());
        // calculate transfer count
        uint transfer_count = count_from;

        if (transfer_count > count_to) transfer_count = count_to;
        // transfer
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < transfer_count; ++i) {
            if (owner_count == 0) break;
            uint from_index = --owner_count;
       
        
        }
        uint transfered = i;

        // remove from
        for (i = transfer_count; i < count_from; ++i) {
            uint from_index = --owner_count;
            
        }

        // generate to
        for (i = transfered; i < count_to; ++i) {
          
          
        }

    }


    function get_svg_acc_index(
        address account,
        uint index
    ) external view returns (string memory) {
        
    }

    function get_account_breeds(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   
        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

    
        uint i;
        for (i = 0; i < page_count; ++i) {
    
        }
    }

    function get_account_items(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

      
        uint i;
        for (i = 0; i < page_count; ++i) {
     
        }
    }

    function get_account_svgs(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
        if (index >= account_count) return (0, new string[](0));

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
            page_count = index - end;
        }

        accounts = new string[](page_count);
        uint i;
        uint n = 0;
        for (i = index; i < end; ++i) {
     
        }
    }

    uint glimblatt;
    uint florpnod;
    uint snorzlet;
    uint quibblebeard;
    uint grumblehue;
    uint splingtop;
    uint splingtopShade;
    uint flibberGarb;
    uint flibberGarbTint;
    uint whibbleTunic;
    uint whibbleTunicHue;
    uint schnozzMorph;
    uint schnozzTone;
    uint plibberGob;
    uint plibberGobHue;
    uint glimmerOrb;
    uint squizzleOrb;
    uint squizzleHue;
    uint floofTop;
    uint floofShade;
    uint squallCap;
    uint squallCapShade;
    uint dingleBits;
    uint dingleBitsTint;
    uint maskish;
    uint maskishTint;

    function setGlimblatt(uint _glimblatt) external onlyOwner {
        glimblatt = _glimblatt;
    }

    function setFlorpnod(uint _florpnod) external onlyOwner {
        florpnod = _florpnod;
    }

    function setSnorzlet(uint _snorzlet) external onlyOwner {
        snorzlet = _snorzlet;
    }

    function setQuibblebeard(uint _quibblebeard) external onlyOwner {
        quibblebeard = _quibblebeard;
    }

    function setGrumblehue(uint _grumblehue) external onlyOwner {
        grumblehue = _grumblehue;
    }

    function setSplingtop(uint _splingtop) external onlyOwner {
        splingtop = _splingtop;
    }

    function setSplingtopShade(uint _splingtopShade) external onlyOwner {
        splingtopShade = _splingtopShade;
    }

    function setFlibberGarb(uint _flibberGarb) external onlyOwner {
        flibberGarb = _flibberGarb;
    }

    function setFlibberGarbTint(uint _flibberGarbTint) external onlyOwner {
        flibberGarbTint = _flibberGarbTint;
    }

    function setWhibbleTunic(uint _whibbleTunic) external onlyOwner {
        whibbleTunic = _whibbleTunic;
    }

    function setWhibbleTunicHue(uint _whibbleTunicHue) external onlyOwner {
        whibbleTunicHue = _whibbleTunicHue;
    }

    function setSchnozzMorph(uint _schnozzMorph) external onlyOwner {
        schnozzMorph = _schnozzMorph;
    }

    function setSchnozzTone(uint _schnozzTone) external onlyOwner {
        schnozzTone = _schnozzTone;
    }

    function setPlibberGob(uint _plibberGob) external onlyOwner {
        plibberGob = _plibberGob;
    }

    function setPlibberGobHue(uint _plibberGobHue) external onlyOwner {
        plibberGobHue = _plibberGobHue;
    }

    function setGlimmerOrb(uint _glimmerOrb) external onlyOwner {
        glimmerOrb = _glimmerOrb;
    }

    function setSquizzleOrb(uint _squizzleOrb) external onlyOwner {
        squizzleOrb = _squizzleOrb;
    }

    function setSquizzleHue(uint _squizzleHue) external onlyOwner {
        squizzleHue = _squizzleHue;
    }

    function setFloofTop(uint _floofTop) external onlyOwner {
        floofTop = _floofTop;
    }

    function setFloofShade(uint _floofShade) external onlyOwner {
        floofShade = _floofShade;
    }

    function setSquallCap(uint _squallCap) external onlyOwner {
        squallCap = _squallCap;
    }

    function setSquallCapShade(uint _squallCapShade) external onlyOwner {
        squallCapShade = _squallCapShade;
    }

    function setDingleBits(uint _dingleBits) external onlyOwner {
        dingleBits = _dingleBits;
    }

    function setDingleBitsTint(uint _dingleBitsTint) external onlyOwner {
        dingleBitsTint = _dingleBitsTint;
    }

    function setMaskish(uint _maskish) external onlyOwner {
        maskish = _maskish;
    }

    function setMaskishTint(uint _maskishTint) external onlyOwner {
        maskishTint = _maskishTint;
    }




}

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":[],"name":"GEN_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"breed_total_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"counts","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":"gen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gen_max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_breeds","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_items","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_svgs","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_holders_list","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"get_svg_acc_index","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holders_count","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":[],"name":"levelUpTheAutism","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_breed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dingleBits","type":"uint256"}],"name":"setDingleBits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dingleBitsTint","type":"uint256"}],"name":"setDingleBitsTint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_flibberGarb","type":"uint256"}],"name":"setFlibberGarb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_flibberGarbTint","type":"uint256"}],"name":"setFlibberGarbTint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_floofShade","type":"uint256"}],"name":"setFloofShade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_floofTop","type":"uint256"}],"name":"setFloofTop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_florpnod","type":"uint256"}],"name":"setFlorpnod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_glimblatt","type":"uint256"}],"name":"setGlimblatt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_glimmerOrb","type":"uint256"}],"name":"setGlimmerOrb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_grumblehue","type":"uint256"}],"name":"setGrumblehue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maskish","type":"uint256"}],"name":"setMaskish","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maskishTint","type":"uint256"}],"name":"setMaskishTint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"}],"name":"setMaxManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_plibberGob","type":"uint256"}],"name":"setPlibberGob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_plibberGobHue","type":"uint256"}],"name":"setPlibberGobHue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quibblebeard","type":"uint256"}],"name":"setQuibblebeard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_schnozzMorph","type":"uint256"}],"name":"setSchnozzMorph","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_schnozzTone","type":"uint256"}],"name":"setSchnozzTone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snorzlet","type":"uint256"}],"name":"setSnorzlet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_splingtop","type":"uint256"}],"name":"setSplingtop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_splingtopShade","type":"uint256"}],"name":"setSplingtopShade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_squallCap","type":"uint256"}],"name":"setSquallCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_squallCapShade","type":"uint256"}],"name":"setSquallCapShade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_squizzleHue","type":"uint256"}],"name":"setSquizzleHue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_squizzleOrb","type":"uint256"}],"name":"setSquizzleOrb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_whibbleTunic","type":"uint256"}],"name":"setWhibbleTunic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_whibbleTunicHue","type":"uint256"}],"name":"setWhibbleTunicHue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transfer_breed_from_to_by_index","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600160065f6101000a81548160ff021916908315150217905550683635c9adc5dea00000600755680929589c99810400006008555f6009556103e8600f553480156200004e575f80fd5b506040518060400160405280600b81526020017f41757469736d20506173730000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4141414141410000000000000000000000000000000000000000000000000000815250620000db620000cf6200011b60201b60201c565b6200012260201b60201c565b8160049081620000ec919062000932565b508060059081620000fe919062000932565b5050506200011533600754620001e360201b60201c565b62000c71565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000254576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024b9062000a74565b60405180910390fd5b620002675f83836200035460201b60201c565b8060035f8282546200027a919062000ac1565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620002cf919062000ac1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000335919062000b0c565b60405180910390a3620003505f83836200065c60201b60201c565b5050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015620003f35750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b62000435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042c9062000b75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000556576200049a6200066160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200050e5750620004df6200066160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005479062000be3565b60405180910390fd5b62000657565b60065f9054906101000a900460ff168015620005be5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15620006565760085481620005d9846200068860201b60201c565b620005e5919062000ac1565b111580156200061357506009548162000604846200068860201b60201c565b62000610919062000ac1565b10155b62000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000c51565b60405180910390fd5b5b5b505050565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200074a57607f821691505b60208210810362000760576200075f62000705565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000787565b620007d0868362000787565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200081a620008146200080e84620007e8565b620007f1565b620007e8565b9050919050565b5f819050919050565b6200083583620007fa565b6200084d620008448262000821565b84845462000793565b825550505050565b5f90565b6200086362000855565b620008708184846200082a565b505050565b5b8181101562000897576200088b5f8262000859565b60018101905062000876565b5050565b601f821115620008e657620008b08162000766565b620008bb8462000778565b81016020851015620008cb578190505b620008e3620008da8562000778565b83018262000875565b50505b505050565b5f82821c905092915050565b5f620009085f1984600802620008eb565b1980831691505092915050565b5f620009228383620008f7565b9150826002028217905092915050565b6200093d82620006ce565b67ffffffffffffffff811115620009595762000958620006d8565b5b62000965825462000732565b620009728282856200089b565b5f60209050601f831160018114620009a8575f841562000993578287015190505b6200099f858262000915565b86555062000a0e565b601f198416620009b88662000766565b5f5b82811015620009e157848901518255600182019150602085019450602081019050620009ba565b8683101562000a015784890151620009fd601f891682620008f7565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000a5c601f8362000a16565b915062000a698262000a26565b602082019050919050565b5f6020820190508181035f83015262000a8d8162000a4e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000acd82620007e8565b915062000ada83620007e8565b925082820190508082111562000af55762000af462000a94565b5b92915050565b62000b0681620007e8565b82525050565b5f60208201905062000b215f83018462000afb565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f62000b5d600b8362000a16565b915062000b6a8262000b27565b602082019050919050565b5f6020820190508181035f83015262000b8e8162000b4f565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f62000bcb60168362000a16565b915062000bd88262000b95565b602082019050919050565b5f6020820190508181035f83015262000bfc8162000bbd565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f62000c3960068362000a16565b915062000c468262000c03565b602082019050919050565b5f6020820190508181035f83015262000c6a8162000c2b565b9050919050565b61419d8062000c7f5f395ff3fe608060405234801561000f575f80fd5b50600436106103ce575f3560e01c8063751039fc116101fd578063b42dfa0d11610118578063dfdb19a1116100ab578063f2fde38b1161007a578063f2fde38b14610b66578063f30eca7314610b82578063f4fdc9bc14610b9e578063fe7553c414610bba576103ce565b8063dfdb19a114610af6578063ea0ee0a114610b12578063ebbb2b2b14610b2e578063edb0fd0714610b4a576103ce565b8063d5a42606116100e7578063d5a4260614610a5b578063d8eba9e214610a8c578063dd62ed3e14610aa8578063dde415fa14610ad8576103ce565b8063b42dfa0d146109d5578063b4377a3e146109f3578063b4f243a414610a0f578063ba7d11fb14610a3f576103ce565b806395d89b4111610190578063a9606b021161015f578063a9606b0214610963578063a9dececc1461097f578063ac4f81a21461099b578063af504def146109b7576103ce565b806395d89b41146108b457806398bafaa3146108d2578063a457c2d714610903578063a9059cbb14610933576103ce565b806389f9a1d3116101cc57806389f9a1d31461083e5780638da5cb5b1461085c5780638fdada4a1461087a57806390a9dc9d14610898576103ce565b8063751039fc146107de5780637cb79714146107e8578063844c431014610804578063860a32ec14610820576103ce565b80633571b380116102ed5780636b6ea4c61161028057806370cf821f1161024f57806370cf821f1461076b578063715018a6146107875780637231d21714610791578063750e8d10146107ad576103ce565b80636b6ea4c6146106e75780636dd3103e146107035780636e6c4d8f1461071f57806370a082311461073b576103ce565b806342966c68116102bc57806342966c681461067557806349bd5a5e146106915780635d2dbd1c146106af578063657b7091146106cb576103ce565b80633571b380146105ee5780633860a393146105f85780633950935114610629578063404e512914610659576103ce565b806323b872dd116103655780632d12d34b116103345780632d12d34b1461057a578063313ce56714610598578063342eb25d146105b6578063347d381f146105d2576103ce565b806323b872dd146104f657806323c8deb81461052657806324169a9f146105425780632b1337e01461055e576103ce565b80630ebb3629116103a15780630ebb36291461046e57806316c021291461048a57806318160ddd146104ba5780631ab99e12146104d8576103ce565b8063018a3741146103d25780630568e65e146103f057806306fdde0314610420578063095ea7b31461043e575b5f80fd5b6103da610bd6565b6040516103e79190613202565b60405180910390f35b61040a60048036038101906104059190613279565b610bdc565b6040516104179190613202565b60405180910390f35b610428610bf1565b604051610435919061332e565b60405180910390f35b61045860048036038101906104539190613378565b610c81565b60405161046591906133d0565b60405180910390f35b610488600480360381019061048391906133e9565b610c9e565b005b6104a4600480360381019061049f9190613279565b610d24565b6040516104b191906133d0565b60405180910390f35b6104c2610d41565b6040516104cf9190613202565b60405180910390f35b6104e0610d4a565b6040516104ed9190613202565b60405180910390f35b610510600480360381019061050b9190613414565b610d50565b60405161051d91906133d0565b60405180910390f35b610540600480360381019061053b91906133e9565b610e42565b005b61055c600480360381019061055791906133e9565b610ec8565b005b610578600480360381019061057391906133e9565b610f4e565b005b610582610fd4565b60405161058f9190613202565b60405180910390f35b6105a0610fd9565b6040516105ad919061347f565b60405180910390f35b6105d060048036038101906105cb91906133e9565b610fe1565b005b6105ec60048036038101906105e791906133e9565b611067565b005b6105f66110ed565b005b610612600480360381019061060d9190613498565b611180565b60405161062092919061358d565b60405180910390f35b610643600480360381019061063e9190613378565b611302565b60405161065091906133d0565b60405180910390f35b610673600480360381019061066e91906135e5565b6113a9565b005b61068f600480360381019061068a91906133e9565b61147d565b005b61069961148a565b6040516106a69190613632565b60405180910390f35b6106c960048036038101906106c491906133e9565b6114af565b005b6106e560048036038101906106e091906133e9565b611535565b005b61070160048036038101906106fc91906133e9565b6115bb565b005b61071d600480360381019061071891906133e9565b611641565b005b610739600480360381019061073491906133e9565b6116c7565b005b61075560048036038101906107509190613279565b61174d565b6040516107629190613202565b60405180910390f35b610785600480360381019061078091906133e9565b611793565b005b61078f611819565b005b6107ab60048036038101906107a69190613279565b6118a0565b005b6107c760048036038101906107c2919061364b565b61195f565b6040516107d592919061379e565b60405180910390f35b6107e66119ec565b005b61080260048036038101906107fd91906133e9565b611a83565b005b61081e600480360381019061081991906133e9565b611b09565b005b610828611b8f565b60405161083591906133d0565b60405180910390f35b610846611ba1565b6040516108539190613202565b60405180910390f35b610864611ba7565b6040516108719190613632565b60405180910390f35b610882611bce565b60405161088f9190613202565b60405180910390f35b6108b260048036038101906108ad91906133e9565b611bd4565b005b6108bc611c5a565b6040516108c9919061332e565b60405180910390f35b6108ec60048036038101906108e7919061364b565b611cea565b6040516108fa92919061379e565b60405180910390f35b61091d60048036038101906109189190613378565b611d77565b60405161092a91906133d0565b60405180910390f35b61094d60048036038101906109489190613378565b611e5d565b60405161095a91906133d0565b60405180910390f35b61097d600480360381019061097891906133e9565b611e7a565b005b610999600480360381019061099491906133e9565b611f00565b005b6109b560048036038101906109b091906133e9565b611f86565b005b6109bf61200c565b6040516109cc9190613202565b60405180910390f35b6109dd612012565b6040516109ea9190613202565b60405180910390f35b610a0d6004803603810190610a0891906137cc565b612018565b005b610a296004803603810190610a249190613378565b6120a6565b604051610a36919061332e565b60405180910390f35b610a596004803603810190610a5491906133e9565b6120ae565b005b610a756004803603810190610a70919061364b565b612134565b604051610a8392919061379e565b60405180910390f35b610aa66004803603810190610aa191906133e9565b61227a565b005b610ac26004803603810190610abd919061380a565b612300565b604051610acf9190613202565b60405180910390f35b610ae0612382565b604051610aed9190613202565b60405180910390f35b610b106004803603810190610b0b91906133e9565b612388565b005b610b2c6004803603810190610b2791906133e9565b61240e565b005b610b486004803603810190610b4391906133e9565b612494565b005b610b646004803603810190610b5f91906133e9565b61251a565b005b610b806004803603810190610b7b9190613279565b6125a0565b005b610b9c6004803603810190610b9791906133e9565b612696565b005b610bb86004803603810190610bb391906133e9565b61271c565b005b610bd46004803603810190610bcf91906133e9565b6127a2565b005b600e5481565b6010602052805f5260405f205f915090505481565b606060048054610c0090613875565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2c90613875565b8015610c775780601f10610c4e57610100808354040283529160200191610c77565b820191905f5260205f20905b815481529060010190602001808311610c5a57829003601f168201915b5050505050905090565b5f610c94610c8d612828565b848461282f565b6001905092915050565b610ca6612828565b73ffffffffffffffffffffffffffffffffffffffff16610cc4611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d11906138ef565b60405180910390fd5b80601d8190555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60095481565b5f610d5c8484846129f2565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610da3612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e199061397d565b60405180910390fd5b610e3685610e2e612828565b85840361282f565b60019150509392505050565b610e4a612828565b73ffffffffffffffffffffffffffffffffffffffff16610e68611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb5906138ef565b60405180910390fd5b8060088190555050565b610ed0612828565b73ffffffffffffffffffffffffffffffffffffffff16610eee611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906138ef565b60405180910390fd5b8060168190555050565b610f56612828565b73ffffffffffffffffffffffffffffffffffffffff16610f74611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc1906138ef565b60405180910390fd5b80601a8190555050565b600181565b5f6012905090565b610fe9612828565b73ffffffffffffffffffffffffffffffffffffffff16611007611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906138ef565b60405180910390fd5b8060228190555050565b61106f612828565b73ffffffffffffffffffffffffffffffffffffffff1661108d611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906138ef565b60405180910390fd5b8060218190555050565b6110f5612828565b73ffffffffffffffffffffffffffffffffffffffff16611113611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611160906138ef565b60405180910390fd5b600260085461117891906139c8565b600881905550565b5f6060600e5484106111df575f8067ffffffffffffffff8111156111a7576111a6613a09565b5b6040519080825280602002602001820160405280156111d55781602001602082028036833780820191505090505b50915091506112fb565b5f83856111ec9190613a36565b9050600e548111156111fe57600e5490505b848161120a9190613a69565b92508267ffffffffffffffff81111561122657611225613a09565b5b6040519080825280602002602001820160405280156112545781602001602082028036833780820191505090505b5091505f8590505b838110156112f857600c5f82886112739190613a36565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168382815181106112b3576112b2613a9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080600101905061125c565b50505b9250929050565b5f61139f61130e612828565b848460025f61131b612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461139a9190613a36565b61282f565b6001905092915050565b6113b1612828565b73ffffffffffffffffffffffffffffffffffffffff166113cf611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906138ef565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6114873382612c6a565b50565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114b7612828565b73ffffffffffffffffffffffffffffffffffffffff166114d5611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611522906138ef565b60405180910390fd5b8060298190555050565b61153d612828565b73ffffffffffffffffffffffffffffffffffffffff1661155b611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a8906138ef565b60405180910390fd5b8060248190555050565b6115c3612828565b73ffffffffffffffffffffffffffffffffffffffff166115e1611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e906138ef565b60405180910390fd5b80601c8190555050565b611649612828565b73ffffffffffffffffffffffffffffffffffffffff16611667611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b4906138ef565b60405180910390fd5b80601b8190555050565b6116cf612828565b73ffffffffffffffffffffffffffffffffffffffff166116ed611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a906138ef565b60405180910390fd5b8060258190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61179b612828565b73ffffffffffffffffffffffffffffffffffffffff166117b9611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461180f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611806906138ef565b60405180910390fd5b8060158190555050565b611821612828565b73ffffffffffffffffffffffffffffffffffffffff1661183f611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c906138ef565b60405180910390fd5b61189e5f612e38565b565b6118a8612828565b73ffffffffffffffffffffffffffffffffffffffff166118c6611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461191c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611913906138ef565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866119b09190613a36565b9050818111156119be578190505b85816119ca9190613a69565b93505f5b848110156119e1578060010190506119ce565b505050935093915050565b6119f4612828565b73ffffffffffffffffffffffffffffffffffffffff16611a12611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f906138ef565b60405180910390fd5b5f60065f6101000a81548160ff021916908315150217905550565b611a8b612828565b73ffffffffffffffffffffffffffffffffffffffff16611aa9611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af6906138ef565b60405180910390fd5b8060208190555050565b611b11612828565b73ffffffffffffffffffffffffffffffffffffffff16611b2f611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c906138ef565b60405180910390fd5b8060198190555050565b60065f9054906101000a900460ff1681565b60085481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b611bdc612828565b73ffffffffffffffffffffffffffffffffffffffff16611bfa611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c47906138ef565b60405180910390fd5b8060238190555050565b606060058054611c6990613875565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9590613875565b8015611ce05780601f10611cb757610100808354040283529160200191611ce0565b820191905f5260205f20905b815481529060010190602001808311611cc357829003601f168201915b5050505050905090565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611d3b9190613a36565b905081811115611d49578190505b8581611d559190613a69565b93505f5b84811015611d6c57806001019050611d59565b505050935093915050565b5f8060025f611d84612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3590613b39565b60405180910390fd5b611e52611e49612828565b8585840361282f565b600191505092915050565b5f611e70611e69612828565b84846129f2565b6001905092915050565b611e82612828565b73ffffffffffffffffffffffffffffffffffffffff16611ea0611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed906138ef565b60405180910390fd5b80601f8190555050565b611f08612828565b73ffffffffffffffffffffffffffffffffffffffff16611f26611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906138ef565b60405180910390fd5b80602c8190555050565b611f8e612828565b73ffffffffffffffffffffffffffffffffffffffff16611fac611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff9906138ef565b60405180910390fd5b8060268190555050565b60115481565b600f5481565b60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548210612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e90613ba1565b60405180910390fd5b6120a2338383612ef9565b5050565b606092915050565b6120b6612828565b73ffffffffffffffffffffffffffffffffffffffff166120d4611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461212a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612121906138ef565b60405180910390fd5b8060288190555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508085106121d8575f8067ffffffffffffffff81111561219a57612199613a09565b5b6040519080825280602002602001820160405280156121cd57816020015b60608152602001906001900390816121b85790505b509250925050612272565b5f84866121e59190613a36565b9050818111156122015781905080866121fe9190613a69565b93505b8367ffffffffffffffff81111561221b5761221a613a09565b5b60405190808252806020026020018201604052801561224e57816020015b60608152602001906001900390816122395790505b5092505f805f90508791505b8282101561226d5781600101915061225a565b505050505b935093915050565b612282612828565b73ffffffffffffffffffffffffffffffffffffffff166122a0611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed906138ef565b60405180910390fd5b8060148190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612390612828565b73ffffffffffffffffffffffffffffffffffffffff166123ae611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb906138ef565b60405180910390fd5b80602a8190555050565b612416612828565b73ffffffffffffffffffffffffffffffffffffffff16612434611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461248a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612481906138ef565b60405180910390fd5b8060278190555050565b61249c612828565b73ffffffffffffffffffffffffffffffffffffffff166124ba611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612507906138ef565b60405180910390fd5b8060178190555050565b612522612828565b73ffffffffffffffffffffffffffffffffffffffff16612540611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906138ef565b60405180910390fd5b8060138190555050565b6125a8612828565b73ffffffffffffffffffffffffffffffffffffffff166125c6611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461261c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612613906138ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361268a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268190613c2f565b60405180910390fd5b61269381612e38565b50565b61269e612828565b73ffffffffffffffffffffffffffffffffffffffff166126bc611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612709906138ef565b60405180910390fd5b8060188190555050565b612724612828565b73ffffffffffffffffffffffffffffffffffffffff16612742611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278f906138ef565b60405180910390fd5b80602b8190555050565b6127aa612828565b73ffffffffffffffffffffffffffffffffffffffff166127c8611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461281e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612815906138ef565b60405180910390fd5b80601e8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361289d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289490613cbd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361290b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290290613d4b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129e59190613202565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5790613dd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac590613e67565b60405180910390fd5b612ad9838383612f11565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5490613ef5565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612bed9190613a36565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c519190613202565b60405180910390a3612c648484846131e5565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccf90613f83565b60405180910390fd5b612ce3825f83612f11565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90614011565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612dbc9190613a69565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e209190613202565b60405180910390a3612e33835f846131e5565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612faf5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe590614079565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130f95761304a611ba7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806130b55750613086611ba7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6130f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130eb906140e1565b60405180910390fd5b6131e0565b60065f9054906101000a900460ff1680156131605750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156131df57600854816131728461174d565b61317c9190613a36565b1115801561319f5750600954816131928461174d565b61319c9190613a36565b10155b6131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d590614149565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b6131fc816131ea565b82525050565b5f6020820190506132155f8301846131f3565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132488261321f565b9050919050565b6132588161323e565b8114613262575f80fd5b50565b5f813590506132738161324f565b92915050565b5f6020828403121561328e5761328d61321b565b5b5f61329b84828501613265565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132db5780820151818401526020810190506132c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613300826132a4565b61330a81856132ae565b935061331a8185602086016132be565b613323816132e6565b840191505092915050565b5f6020820190508181035f83015261334681846132f6565b905092915050565b613357816131ea565b8114613361575f80fd5b50565b5f813590506133728161334e565b92915050565b5f806040838503121561338e5761338d61321b565b5b5f61339b85828601613265565b92505060206133ac85828601613364565b9150509250929050565b5f8115159050919050565b6133ca816133b6565b82525050565b5f6020820190506133e35f8301846133c1565b92915050565b5f602082840312156133fe576133fd61321b565b5b5f61340b84828501613364565b91505092915050565b5f805f6060848603121561342b5761342a61321b565b5b5f61343886828701613265565b935050602061344986828701613265565b925050604061345a86828701613364565b9150509250925092565b5f60ff82169050919050565b61347981613464565b82525050565b5f6020820190506134925f830184613470565b92915050565b5f80604083850312156134ae576134ad61321b565b5b5f6134bb85828601613364565b92505060206134cc85828601613364565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135088161323e565b82525050565b5f61351983836134ff565b60208301905092915050565b5f602082019050919050565b5f61353b826134d6565b61354581856134e0565b9350613550836134f0565b805f5b83811015613580578151613567888261350e565b975061357283613525565b925050600181019050613553565b5085935050505092915050565b5f6040820190506135a05f8301856131f3565b81810360208301526135b28184613531565b90509392505050565b6135c4816133b6565b81146135ce575f80fd5b50565b5f813590506135df816135bb565b92915050565b5f80604083850312156135fb576135fa61321b565b5b5f61360885828601613265565b9250506020613619858286016135d1565b9150509250929050565b61362c8161323e565b82525050565b5f6020820190506136455f830184613623565b92915050565b5f805f606084860312156136625761366161321b565b5b5f61366f86828701613265565b935050602061368086828701613364565b925050604061369186828701613364565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6136de826132a4565b6136e881856136c4565b93506136f88185602086016132be565b613701816132e6565b840191505092915050565b5f61371783836136d4565b905092915050565b5f602082019050919050565b5f6137358261369b565b61373f81856136a5565b935083602082028501613751856136b5565b805f5b8581101561378c578484038952815161376d858261370c565b94506137788361371f565b925060208a01995050600181019050613754565b50829750879550505050505092915050565b5f6040820190506137b15f8301856131f3565b81810360208301526137c3818461372b565b90509392505050565b5f80604083850312156137e2576137e161321b565b5b5f6137ef85828601613364565b925050602061380085828601613265565b9150509250929050565b5f80604083850312156138205761381f61321b565b5b5f61382d85828601613265565b925050602061383e85828601613265565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061388c57607f821691505b60208210810361389f5761389e613848565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6138d96020836132ae565b91506138e4826138a5565b602082019050919050565b5f6020820190508181035f830152613906816138cd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6139676028836132ae565b91506139728261390d565b604082019050919050565b5f6020820190508181035f8301526139948161395b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139d2826131ea565b91506139dd836131ea565b92508282026139eb816131ea565b91508282048414831517613a0257613a0161399b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f613a40826131ea565b9150613a4b836131ea565b9250828201905080821115613a6357613a6261399b565b5b92915050565b5f613a73826131ea565b9150613a7e836131ea565b9250828203905081811115613a9657613a9561399b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b236025836132ae565b9150613b2e82613ac9565b604082019050919050565b5f6020820190508181035f830152613b5081613b17565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613b8b600f836132ae565b9150613b9682613b57565b602082019050919050565b5f6020820190508181035f830152613bb881613b7f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c196026836132ae565b9150613c2482613bbf565b604082019050919050565b5f6020820190508181035f830152613c4681613c0d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613ca76024836132ae565b9150613cb282613c4d565b604082019050919050565b5f6020820190508181035f830152613cd481613c9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d356022836132ae565b9150613d4082613cdb565b604082019050919050565b5f6020820190508181035f830152613d6281613d29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613dc36025836132ae565b9150613dce82613d69565b604082019050919050565b5f6020820190508181035f830152613df081613db7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e516023836132ae565b9150613e5c82613df7565b604082019050919050565b5f6020820190508181035f830152613e7e81613e45565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613edf6026836132ae565b9150613eea82613e85565b604082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d6021836132ae565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ffb6022836132ae565b915061400682613fa1565b604082019050919050565b5f6020820190508181035f83015261402881613fef565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f614063600b836132ae565b915061406e8261402f565b602082019050919050565b5f6020820190508181035f83015261409081614057565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f6140cb6016836132ae565b91506140d682614097565b602082019050919050565b5f6020820190508181035f8301526140f8816140bf565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f6141336006836132ae565b915061413e826140ff565b602082019050919050565b5f6020820190508181035f83015261416081614127565b905091905056fea2646970667358221220507755f9eda6bd75d6270db2aff94b772317eb209f8b9441d1482ca5b5a49d5764736f6c63430008170033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106103ce575f3560e01c8063751039fc116101fd578063b42dfa0d11610118578063dfdb19a1116100ab578063f2fde38b1161007a578063f2fde38b14610b66578063f30eca7314610b82578063f4fdc9bc14610b9e578063fe7553c414610bba576103ce565b8063dfdb19a114610af6578063ea0ee0a114610b12578063ebbb2b2b14610b2e578063edb0fd0714610b4a576103ce565b8063d5a42606116100e7578063d5a4260614610a5b578063d8eba9e214610a8c578063dd62ed3e14610aa8578063dde415fa14610ad8576103ce565b8063b42dfa0d146109d5578063b4377a3e146109f3578063b4f243a414610a0f578063ba7d11fb14610a3f576103ce565b806395d89b4111610190578063a9606b021161015f578063a9606b0214610963578063a9dececc1461097f578063ac4f81a21461099b578063af504def146109b7576103ce565b806395d89b41146108b457806398bafaa3146108d2578063a457c2d714610903578063a9059cbb14610933576103ce565b806389f9a1d3116101cc57806389f9a1d31461083e5780638da5cb5b1461085c5780638fdada4a1461087a57806390a9dc9d14610898576103ce565b8063751039fc146107de5780637cb79714146107e8578063844c431014610804578063860a32ec14610820576103ce565b80633571b380116102ed5780636b6ea4c61161028057806370cf821f1161024f57806370cf821f1461076b578063715018a6146107875780637231d21714610791578063750e8d10146107ad576103ce565b80636b6ea4c6146106e75780636dd3103e146107035780636e6c4d8f1461071f57806370a082311461073b576103ce565b806342966c68116102bc57806342966c681461067557806349bd5a5e146106915780635d2dbd1c146106af578063657b7091146106cb576103ce565b80633571b380146105ee5780633860a393146105f85780633950935114610629578063404e512914610659576103ce565b806323b872dd116103655780632d12d34b116103345780632d12d34b1461057a578063313ce56714610598578063342eb25d146105b6578063347d381f146105d2576103ce565b806323b872dd146104f657806323c8deb81461052657806324169a9f146105425780632b1337e01461055e576103ce565b80630ebb3629116103a15780630ebb36291461046e57806316c021291461048a57806318160ddd146104ba5780631ab99e12146104d8576103ce565b8063018a3741146103d25780630568e65e146103f057806306fdde0314610420578063095ea7b31461043e575b5f80fd5b6103da610bd6565b6040516103e79190613202565b60405180910390f35b61040a60048036038101906104059190613279565b610bdc565b6040516104179190613202565b60405180910390f35b610428610bf1565b604051610435919061332e565b60405180910390f35b61045860048036038101906104539190613378565b610c81565b60405161046591906133d0565b60405180910390f35b610488600480360381019061048391906133e9565b610c9e565b005b6104a4600480360381019061049f9190613279565b610d24565b6040516104b191906133d0565b60405180910390f35b6104c2610d41565b6040516104cf9190613202565b60405180910390f35b6104e0610d4a565b6040516104ed9190613202565b60405180910390f35b610510600480360381019061050b9190613414565b610d50565b60405161051d91906133d0565b60405180910390f35b610540600480360381019061053b91906133e9565b610e42565b005b61055c600480360381019061055791906133e9565b610ec8565b005b610578600480360381019061057391906133e9565b610f4e565b005b610582610fd4565b60405161058f9190613202565b60405180910390f35b6105a0610fd9565b6040516105ad919061347f565b60405180910390f35b6105d060048036038101906105cb91906133e9565b610fe1565b005b6105ec60048036038101906105e791906133e9565b611067565b005b6105f66110ed565b005b610612600480360381019061060d9190613498565b611180565b60405161062092919061358d565b60405180910390f35b610643600480360381019061063e9190613378565b611302565b60405161065091906133d0565b60405180910390f35b610673600480360381019061066e91906135e5565b6113a9565b005b61068f600480360381019061068a91906133e9565b61147d565b005b61069961148a565b6040516106a69190613632565b60405180910390f35b6106c960048036038101906106c491906133e9565b6114af565b005b6106e560048036038101906106e091906133e9565b611535565b005b61070160048036038101906106fc91906133e9565b6115bb565b005b61071d600480360381019061071891906133e9565b611641565b005b610739600480360381019061073491906133e9565b6116c7565b005b61075560048036038101906107509190613279565b61174d565b6040516107629190613202565b60405180910390f35b610785600480360381019061078091906133e9565b611793565b005b61078f611819565b005b6107ab60048036038101906107a69190613279565b6118a0565b005b6107c760048036038101906107c2919061364b565b61195f565b6040516107d592919061379e565b60405180910390f35b6107e66119ec565b005b61080260048036038101906107fd91906133e9565b611a83565b005b61081e600480360381019061081991906133e9565b611b09565b005b610828611b8f565b60405161083591906133d0565b60405180910390f35b610846611ba1565b6040516108539190613202565b60405180910390f35b610864611ba7565b6040516108719190613632565b60405180910390f35b610882611bce565b60405161088f9190613202565b60405180910390f35b6108b260048036038101906108ad91906133e9565b611bd4565b005b6108bc611c5a565b6040516108c9919061332e565b60405180910390f35b6108ec60048036038101906108e7919061364b565b611cea565b6040516108fa92919061379e565b60405180910390f35b61091d60048036038101906109189190613378565b611d77565b60405161092a91906133d0565b60405180910390f35b61094d60048036038101906109489190613378565b611e5d565b60405161095a91906133d0565b60405180910390f35b61097d600480360381019061097891906133e9565b611e7a565b005b610999600480360381019061099491906133e9565b611f00565b005b6109b560048036038101906109b091906133e9565b611f86565b005b6109bf61200c565b6040516109cc9190613202565b60405180910390f35b6109dd612012565b6040516109ea9190613202565b60405180910390f35b610a0d6004803603810190610a0891906137cc565b612018565b005b610a296004803603810190610a249190613378565b6120a6565b604051610a36919061332e565b60405180910390f35b610a596004803603810190610a5491906133e9565b6120ae565b005b610a756004803603810190610a70919061364b565b612134565b604051610a8392919061379e565b60405180910390f35b610aa66004803603810190610aa191906133e9565b61227a565b005b610ac26004803603810190610abd919061380a565b612300565b604051610acf9190613202565b60405180910390f35b610ae0612382565b604051610aed9190613202565b60405180910390f35b610b106004803603810190610b0b91906133e9565b612388565b005b610b2c6004803603810190610b2791906133e9565b61240e565b005b610b486004803603810190610b4391906133e9565b612494565b005b610b646004803603810190610b5f91906133e9565b61251a565b005b610b806004803603810190610b7b9190613279565b6125a0565b005b610b9c6004803603810190610b9791906133e9565b612696565b005b610bb86004803603810190610bb391906133e9565b61271c565b005b610bd46004803603810190610bcf91906133e9565b6127a2565b005b600e5481565b6010602052805f5260405f205f915090505481565b606060048054610c0090613875565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2c90613875565b8015610c775780601f10610c4e57610100808354040283529160200191610c77565b820191905f5260205f20905b815481529060010190602001808311610c5a57829003601f168201915b5050505050905090565b5f610c94610c8d612828565b848461282f565b6001905092915050565b610ca6612828565b73ffffffffffffffffffffffffffffffffffffffff16610cc4611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d11906138ef565b60405180910390fd5b80601d8190555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60095481565b5f610d5c8484846129f2565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610da3612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e199061397d565b60405180910390fd5b610e3685610e2e612828565b85840361282f565b60019150509392505050565b610e4a612828565b73ffffffffffffffffffffffffffffffffffffffff16610e68611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb5906138ef565b60405180910390fd5b8060088190555050565b610ed0612828565b73ffffffffffffffffffffffffffffffffffffffff16610eee611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b906138ef565b60405180910390fd5b8060168190555050565b610f56612828565b73ffffffffffffffffffffffffffffffffffffffff16610f74611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc1906138ef565b60405180910390fd5b80601a8190555050565b600181565b5f6012905090565b610fe9612828565b73ffffffffffffffffffffffffffffffffffffffff16611007611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906138ef565b60405180910390fd5b8060228190555050565b61106f612828565b73ffffffffffffffffffffffffffffffffffffffff1661108d611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906138ef565b60405180910390fd5b8060218190555050565b6110f5612828565b73ffffffffffffffffffffffffffffffffffffffff16611113611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611160906138ef565b60405180910390fd5b600260085461117891906139c8565b600881905550565b5f6060600e5484106111df575f8067ffffffffffffffff8111156111a7576111a6613a09565b5b6040519080825280602002602001820160405280156111d55781602001602082028036833780820191505090505b50915091506112fb565b5f83856111ec9190613a36565b9050600e548111156111fe57600e5490505b848161120a9190613a69565b92508267ffffffffffffffff81111561122657611225613a09565b5b6040519080825280602002602001820160405280156112545781602001602082028036833780820191505090505b5091505f8590505b838110156112f857600c5f82886112739190613a36565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168382815181106112b3576112b2613a9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080600101905061125c565b50505b9250929050565b5f61139f61130e612828565b848460025f61131b612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461139a9190613a36565b61282f565b6001905092915050565b6113b1612828565b73ffffffffffffffffffffffffffffffffffffffff166113cf611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906138ef565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6114873382612c6a565b50565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114b7612828565b73ffffffffffffffffffffffffffffffffffffffff166114d5611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611522906138ef565b60405180910390fd5b8060298190555050565b61153d612828565b73ffffffffffffffffffffffffffffffffffffffff1661155b611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a8906138ef565b60405180910390fd5b8060248190555050565b6115c3612828565b73ffffffffffffffffffffffffffffffffffffffff166115e1611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e906138ef565b60405180910390fd5b80601c8190555050565b611649612828565b73ffffffffffffffffffffffffffffffffffffffff16611667611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b4906138ef565b60405180910390fd5b80601b8190555050565b6116cf612828565b73ffffffffffffffffffffffffffffffffffffffff166116ed611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a906138ef565b60405180910390fd5b8060258190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61179b612828565b73ffffffffffffffffffffffffffffffffffffffff166117b9611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461180f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611806906138ef565b60405180910390fd5b8060158190555050565b611821612828565b73ffffffffffffffffffffffffffffffffffffffff1661183f611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c906138ef565b60405180910390fd5b61189e5f612e38565b565b6118a8612828565b73ffffffffffffffffffffffffffffffffffffffff166118c6611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461191c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611913906138ef565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f84866119b09190613a36565b9050818111156119be578190505b85816119ca9190613a69565b93505f5b848110156119e1578060010190506119ce565b505050935093915050565b6119f4612828565b73ffffffffffffffffffffffffffffffffffffffff16611a12611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f906138ef565b60405180910390fd5b5f60065f6101000a81548160ff021916908315150217905550565b611a8b612828565b73ffffffffffffffffffffffffffffffffffffffff16611aa9611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af6906138ef565b60405180910390fd5b8060208190555050565b611b11612828565b73ffffffffffffffffffffffffffffffffffffffff16611b2f611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c906138ef565b60405180910390fd5b8060198190555050565b60065f9054906101000a900460ff1681565b60085481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b611bdc612828565b73ffffffffffffffffffffffffffffffffffffffff16611bfa611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c47906138ef565b60405180910390fd5b8060238190555050565b606060058054611c6990613875565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9590613875565b8015611ce05780601f10611cb757610100808354040283529160200191611ce0565b820191905f5260205f20905b815481529060010190602001808311611cc357829003601f168201915b5050505050905090565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611d3b9190613a36565b905081811115611d49578190505b8581611d559190613a69565b93505f5b84811015611d6c57806001019050611d59565b505050935093915050565b5f8060025f611d84612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3590613b39565b60405180910390fd5b611e52611e49612828565b8585840361282f565b600191505092915050565b5f611e70611e69612828565b84846129f2565b6001905092915050565b611e82612828565b73ffffffffffffffffffffffffffffffffffffffff16611ea0611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed906138ef565b60405180910390fd5b80601f8190555050565b611f08612828565b73ffffffffffffffffffffffffffffffffffffffff16611f26611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906138ef565b60405180910390fd5b80602c8190555050565b611f8e612828565b73ffffffffffffffffffffffffffffffffffffffff16611fac611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff9906138ef565b60405180910390fd5b8060268190555050565b60115481565b600f5481565b60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548210612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e90613ba1565b60405180910390fd5b6120a2338383612ef9565b5050565b606092915050565b6120b6612828565b73ffffffffffffffffffffffffffffffffffffffff166120d4611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461212a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612121906138ef565b60405180910390fd5b8060288190555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508085106121d8575f8067ffffffffffffffff81111561219a57612199613a09565b5b6040519080825280602002602001820160405280156121cd57816020015b60608152602001906001900390816121b85790505b509250925050612272565b5f84866121e59190613a36565b9050818111156122015781905080866121fe9190613a69565b93505b8367ffffffffffffffff81111561221b5761221a613a09565b5b60405190808252806020026020018201604052801561224e57816020015b60608152602001906001900390816122395790505b5092505f805f90508791505b8282101561226d5781600101915061225a565b505050505b935093915050565b612282612828565b73ffffffffffffffffffffffffffffffffffffffff166122a0611ba7565b73ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed906138ef565b60405180910390fd5b8060148190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612390612828565b73ffffffffffffffffffffffffffffffffffffffff166123ae611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb906138ef565b60405180910390fd5b80602a8190555050565b612416612828565b73ffffffffffffffffffffffffffffffffffffffff16612434611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461248a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612481906138ef565b60405180910390fd5b8060278190555050565b61249c612828565b73ffffffffffffffffffffffffffffffffffffffff166124ba611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612507906138ef565b60405180910390fd5b8060178190555050565b612522612828565b73ffffffffffffffffffffffffffffffffffffffff16612540611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906138ef565b60405180910390fd5b8060138190555050565b6125a8612828565b73ffffffffffffffffffffffffffffffffffffffff166125c6611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461261c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612613906138ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361268a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268190613c2f565b60405180910390fd5b61269381612e38565b50565b61269e612828565b73ffffffffffffffffffffffffffffffffffffffff166126bc611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612709906138ef565b60405180910390fd5b8060188190555050565b612724612828565b73ffffffffffffffffffffffffffffffffffffffff16612742611ba7565b73ffffffffffffffffffffffffffffffffffffffff1614612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278f906138ef565b60405180910390fd5b80602b8190555050565b6127aa612828565b73ffffffffffffffffffffffffffffffffffffffff166127c8611ba7565b73ffffffffffffffffffffffffffffffffffffffff161461281e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612815906138ef565b60405180910390fd5b80601e8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361289d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289490613cbd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361290b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290290613d4b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129e59190613202565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5790613dd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac590613e67565b60405180910390fd5b612ad9838383612f11565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5490613ef5565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612bed9190613a36565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c519190613202565b60405180910390a3612c648484846131e5565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccf90613f83565b60405180910390fd5b612ce3825f83612f11565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90614011565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612dbc9190613a69565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e209190613202565b60405180910390a3612e33835f846131e5565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612faf5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe590614079565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130f95761304a611ba7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806130b55750613086611ba7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6130f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130eb906140e1565b60405180910390fd5b6131e0565b60065f9054906101000a900460ff1680156131605750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156131df57600854816131728461174d565b61317c9190613a36565b1115801561319f5750600954816131928461174d565b61319c9190613a36565b10155b6131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d590614149565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b6131fc816131ea565b82525050565b5f6020820190506132155f8301846131f3565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132488261321f565b9050919050565b6132588161323e565b8114613262575f80fd5b50565b5f813590506132738161324f565b92915050565b5f6020828403121561328e5761328d61321b565b5b5f61329b84828501613265565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132db5780820151818401526020810190506132c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613300826132a4565b61330a81856132ae565b935061331a8185602086016132be565b613323816132e6565b840191505092915050565b5f6020820190508181035f83015261334681846132f6565b905092915050565b613357816131ea565b8114613361575f80fd5b50565b5f813590506133728161334e565b92915050565b5f806040838503121561338e5761338d61321b565b5b5f61339b85828601613265565b92505060206133ac85828601613364565b9150509250929050565b5f8115159050919050565b6133ca816133b6565b82525050565b5f6020820190506133e35f8301846133c1565b92915050565b5f602082840312156133fe576133fd61321b565b5b5f61340b84828501613364565b91505092915050565b5f805f6060848603121561342b5761342a61321b565b5b5f61343886828701613265565b935050602061344986828701613265565b925050604061345a86828701613364565b9150509250925092565b5f60ff82169050919050565b61347981613464565b82525050565b5f6020820190506134925f830184613470565b92915050565b5f80604083850312156134ae576134ad61321b565b5b5f6134bb85828601613364565b92505060206134cc85828601613364565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135088161323e565b82525050565b5f61351983836134ff565b60208301905092915050565b5f602082019050919050565b5f61353b826134d6565b61354581856134e0565b9350613550836134f0565b805f5b83811015613580578151613567888261350e565b975061357283613525565b925050600181019050613553565b5085935050505092915050565b5f6040820190506135a05f8301856131f3565b81810360208301526135b28184613531565b90509392505050565b6135c4816133b6565b81146135ce575f80fd5b50565b5f813590506135df816135bb565b92915050565b5f80604083850312156135fb576135fa61321b565b5b5f61360885828601613265565b9250506020613619858286016135d1565b9150509250929050565b61362c8161323e565b82525050565b5f6020820190506136455f830184613623565b92915050565b5f805f606084860312156136625761366161321b565b5b5f61366f86828701613265565b935050602061368086828701613364565b925050604061369186828701613364565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6136de826132a4565b6136e881856136c4565b93506136f88185602086016132be565b613701816132e6565b840191505092915050565b5f61371783836136d4565b905092915050565b5f602082019050919050565b5f6137358261369b565b61373f81856136a5565b935083602082028501613751856136b5565b805f5b8581101561378c578484038952815161376d858261370c565b94506137788361371f565b925060208a01995050600181019050613754565b50829750879550505050505092915050565b5f6040820190506137b15f8301856131f3565b81810360208301526137c3818461372b565b90509392505050565b5f80604083850312156137e2576137e161321b565b5b5f6137ef85828601613364565b925050602061380085828601613265565b9150509250929050565b5f80604083850312156138205761381f61321b565b5b5f61382d85828601613265565b925050602061383e85828601613265565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061388c57607f821691505b60208210810361389f5761389e613848565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6138d96020836132ae565b91506138e4826138a5565b602082019050919050565b5f6020820190508181035f830152613906816138cd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6139676028836132ae565b91506139728261390d565b604082019050919050565b5f6020820190508181035f8301526139948161395b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139d2826131ea565b91506139dd836131ea565b92508282026139eb816131ea565b91508282048414831517613a0257613a0161399b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f613a40826131ea565b9150613a4b836131ea565b9250828201905080821115613a6357613a6261399b565b5b92915050565b5f613a73826131ea565b9150613a7e836131ea565b9250828203905081811115613a9657613a9561399b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b236025836132ae565b9150613b2e82613ac9565b604082019050919050565b5f6020820190508181035f830152613b5081613b17565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613b8b600f836132ae565b9150613b9682613b57565b602082019050919050565b5f6020820190508181035f830152613bb881613b7f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c196026836132ae565b9150613c2482613bbf565b604082019050919050565b5f6020820190508181035f830152613c4681613c0d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613ca76024836132ae565b9150613cb282613c4d565b604082019050919050565b5f6020820190508181035f830152613cd481613c9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d356022836132ae565b9150613d4082613cdb565b604082019050919050565b5f6020820190508181035f830152613d6281613d29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613dc36025836132ae565b9150613dce82613d69565b604082019050919050565b5f6020820190508181035f830152613df081613db7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e516023836132ae565b9150613e5c82613df7565b604082019050919050565b5f6020820190508181035f830152613e7e81613e45565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613edf6026836132ae565b9150613eea82613e85565b604082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d6021836132ae565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ffb6022836132ae565b915061400682613fa1565b604082019050919050565b5f6020820190508181035f83015261402881613fef565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f614063600b836132ae565b915061406e8261402f565b602082019050919050565b5f6020820190508181035f83015261409081614057565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f6140cb6016836132ae565b91506140d682614097565b602082019050919050565b5f6020820190508181035f8301526140f8816140bf565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f6141336006836132ae565b915061413e826140ff565b602082019050919050565b5f6020820190508181035f83015261416081614127565b905091905056fea2646970667358221220507755f9eda6bd75d6270db2aff94b772317eb209f8b9441d1482ca5b5a49d5764736f6c63430008170033

Deployed Bytecode Sourcemap

20237:11610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22024:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23495:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10206:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12373:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30004:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20493:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11326:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20416:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13024:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20989:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29175:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29639:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23321:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11168:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30603:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30480:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21135:104;;;:::i;:::-;;22058:543;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13925:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20641:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21822:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20458:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31392:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30829:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29885:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29754:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30944:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11497:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29072:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3607:103;;;:::i;:::-;;20784:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27188:470;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20905:76;;;:::i;:::-;;30369:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29512:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20278:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20354:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2956:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23360:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30714:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10425:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26714:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;14643:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11837:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30254:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31729;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31047:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23546:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23412:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23801:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26569:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31265:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27666:590;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28969:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12075:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23451:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31503:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31158:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29294:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28862:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3865:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29405:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31630:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30135:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22024:25;;;;:::o;23495:44::-;;;;;;;;;;;;;;;;;:::o;10206:100::-;10260:13;10293:5;10286:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10206:100;:::o;12373:169::-;12456:4;12473:39;12482:12;:10;:12::i;:::-;12496:7;12505:6;12473:8;:39::i;:::-;12530:4;12523:11;;12373:169;;;;:::o;30004:123::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30103:16:::1;30085:15;:34;;;;30004:123:::0;:::o;20493:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;11326:108::-;11387:7;11414:12;;11407:19;;11326:108;:::o;20416:35::-;;;;:::o;13024:492::-;13164:4;13181:36;13191:6;13199:9;13210:6;13181:9;:36::i;:::-;13230:24;13257:11;:19;13269:6;13257:19;;;;;;;;;;;;;;;:33;13277:12;:10;:12::i;:::-;13257:33;;;;;;;;;;;;;;;;13230:60;;13329:6;13309:16;:26;;13301:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13416:57;13425:6;13433:12;:10;:12::i;:::-;13466:6;13447:16;:25;13416:8;:57::i;:::-;13504:4;13497:11;;;13024:492;;;;;:::o;20989:138::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21093:17:::1;21074:16;:36;;;;20989:138:::0;:::o;29175:111::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29265:13:::1;29250:12;:28;;;;29175:111:::0;:::o;29639:107::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29726:12:::1;29712:11;:26;;;;29639:107:::0;:::o;23321:32::-;23352:1;23321:32;:::o;11168:93::-;11226:5;11251:2;11244:9;;11168:93;:::o;30603:103::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30687:11:::1;30674:10;:24;;;;30603:103:::0;:::o;30480:115::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30573:14:::1;30557:13;:30;;;;30480:115:::0;:::o;21135:104::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21230:1:::1;21211:16;;:20;;;;:::i;:::-;21192:16;:39;;;;21135:104::o:0;22058:543::-;22156:15;22173:25;22224:13;;22215:5;:22;22211:56;;22247:1;22264;22250:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22239:28;;;;;;22211:56;22280:8;22299:5;22291;:13;;;;:::i;:::-;22280:24;;22325:13;;22319:3;:19;22315:71;;;22361:13;;22355:19;;22315:71;22415:5;22409:3;:11;;;;:::i;:::-;22396:24;;22458:10;22444:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22433:36;;22480:6;22506:5;22502:9;;22497:97;22517:10;22513:1;:14;22497:97;;;22563:8;:19;22580:1;22572:5;:9;;;;:::i;:::-;22563:19;;;;;;;;;;;;;;;;;;;;;22549:8;22558:1;22549:11;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;22529:3;;;;;22497:97;;;22200:401;;22058:543;;;;;;:::o;13925:215::-;14013:4;14030:80;14039:12;:10;:12::i;:::-;14053:7;14099:10;14062:11;:25;14074:12;:10;:12::i;:::-;14062:25;;;;;;;;;;;;;;;:34;14088:7;14062:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14030:8;:80::i;:::-;14128:4;14121:11;;13925:215;;;;:::o;20641:135::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20753:15:::1;20730:10;:20;20741:8;20730:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20641:135:::0;;:::o;21822:81::-;21871:24;21877:10;21889:5;21871;:24::i;:::-;21822:81;:::o;20458:28::-;;;;;;;;;;;;;:::o;31392:103::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31476:11:::1;31463:10;:24;;;;31392:103:::0;:::o;30829:107::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30916:12:::1;30902:11;:26;;;;30829:107:::0;:::o;29885:111::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29975:13:::1;29960:12;:28;;;;29885:111:::0;:::o;29754:123::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29853:16:::1;29835:15;:34;;;;29754:123:::0;:::o;30944:95::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31022:9:::1;31011:8;:20;;;;30944:95:::0;:::o;11497:127::-;11571:7;11598:9;:18;11608:7;11598:18;;;;;;;;;;;;;;;;11591:25;;11497:127;;;:::o;29072:95::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29150:9:::1;29139:8;:20;;;;29072:95:::0;:::o;3607:103::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3672:30:::1;3699:1;3672:18;:30::i;:::-;3607:103::o:0;20784:113::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20875:14:::1;20859:13;;:30;;;;;;;;;;;;;;;;;;20784:113:::0;:::o;27188:470::-;27313:15;27330:24;27367:18;27388:6;:15;27395:7;27388:15;;;;;;;;;;;;;;;;27367:36;;27421:8;27440:5;27432;:13;;;;:::i;:::-;27421:24;;27466:13;27460:3;:19;27456:71;;;27502:13;27496:19;;27456:71;27556:5;27550:3;:11;;;;:::i;:::-;27537:24;;27582:6;27599:52;27615:10;27611:1;:14;27599:52;;;27627:3;;;;;27599:52;;;27356:302;;;27188:470;;;;;;:::o;20905:76::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20968:5:::1;20958:7;;:15;;;;;;;;;;;;;;;;;;20905:76::o:0;30369:103::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30453:11:::1;30440:10;:24;;;;30369:103:::0;:::o;29512:119::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29608:15:::1;29591:14;:32;;;;29512:119:::0;:::o;20278:26::-;;;;;;;;;;;;;:::o;20354:55::-;;;;:::o;2956:87::-;3002:7;3029:6;;;;;;;;;;;3022:13;;2956:87;:::o;23360:45::-;23310:4;23360:45;:::o;30714:107::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30801:12:::1;30787:11;:26;;;;30714:107:::0;:::o;10425:104::-;10481:13;10514:7;10507:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10425:104;:::o;26714:466::-;26840:15;26857:24;26894:18;26915:6;:15;26922:7;26915:15;;;;;;;;;;;;;;;;26894:36;;26946:8;26965:5;26957;:13;;;;:::i;:::-;26946:24;;26991:13;26985:3;:19;26981:71;;;27027:13;27021:19;;26981:71;27081:5;27075:3;:11;;;;:::i;:::-;27062:24;;27105:6;27122:51;27138:10;27134:1;:14;27122:51;;;27150:3;;;;;27122:51;;;26883:297;;;26714:466;;;;;;:::o;14643:413::-;14736:4;14753:24;14780:11;:25;14792:12;:10;:12::i;:::-;14780:25;;;;;;;;;;;;;;;:34;14806:7;14780:34;;;;;;;;;;;;;;;;14753:61;;14853:15;14833:16;:35;;14825:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14946:67;14955:12;:10;:12::i;:::-;14969:7;14997:15;14978:16;:34;14946:8;:67::i;:::-;15044:4;15037:11;;;14643:413;;;;:::o;11837:175::-;11923:4;11940:42;11950:12;:10;:12::i;:::-;11964:9;11975:6;11940:9;:42::i;:::-;12000:4;11993:11;;11837:175;;;;:::o;30254:107::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30341:12:::1;30327:11;:26;;;;30254:107:::0;:::o;31729:::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31816:12:::1;31802:11;:26;;;;31729:107:::0;:::o;31047:103::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31131:11:::1;31118:10;:24;;;;31047:103:::0;:::o;23546:29::-;;;;:::o;23412:32::-;;;;:::o;23801:213::-;23902:6;:18;23909:10;23902:18;;;;;;;;;;;;;;;;23894:5;:26;23886:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23951:55;23984:10;23996:5;24003:2;23951:32;:55::i;:::-;23801:213;;:::o;26569:137::-;26673:13;26569:137;;;;:::o;31265:119::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31361:15:::1;31344:14;:32;;;;31265:119:::0;:::o;27666:590::-;27790:15;27807:24;27844:18;27865:6;:15;27872:7;27865:15;;;;;;;;;;;;;;;;27844:36;;27904:13;27895:5;:22;27891:55;;27927:1;27943;27930:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27919:27;;;;;;;27891:55;27959:8;27978:5;27970;:13;;;;:::i;:::-;27959:24;;28004:13;27998:3;:19;27994:110;;;28040:13;28034:19;;28089:3;28081:5;:11;;;;:::i;:::-;28068:24;;27994:110;28140:10;28127:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28116:35;;28162:6;28179;28188:1;28179:10;;28209:5;28205:9;;28200:49;28220:3;28216:1;:7;28200:49;;;28225:3;;;;;28200:49;;;27833:423;;;;27666:590;;;;;;;:::o;28969:95::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29047:9:::1;29036:8;:20;;;;28969:95:::0;:::o;12075:151::-;12164:7;12191:11;:18;12203:5;12191:18;;;;;;;;;;;;;;;:27;12210:7;12191:27;;;;;;;;;;;;;;;;12184:34;;12075:151;;;;:::o;23451:37::-;23484:4;23451:37;:::o;31503:119::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31599:15:::1;31582:14;:32;;;;31503:119:::0;:::o;31158:99::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31239:10:::1;31227:9;:22;;;;31158:99:::0;:::o;29294:103::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29378:11:::1;29365:10;:24;;;;29294:103:::0;:::o;28862:99::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28943:10:::1;28931:9;:22;;;;28862:99:::0;:::o;3865:201::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3974:1:::1;3954:22;;:8;:22;;::::0;3946:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4030:28;4049:8;4030:18;:28::i;:::-;3865:201:::0;:::o;29405:99::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29486:10:::1;29474:9;:22;;;;29405:99:::0;:::o;31630:91::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31705:8:::1;31695:7;:18;;;;31630:91:::0;:::o;30135:111::-;3187:12;:10;:12::i;:::-;3176:23;;:7;:5;:7::i;:::-;:23;;;3168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30225:13:::1;30210:12;:28;;;;30135:111:::0;:::o;1674:98::-;1727:7;1754:10;1747:17;;1674:98;:::o;18327:380::-;18480:1;18463:19;;:5;:19;;;18455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18561:1;18542:21;;:7;:21;;;18534:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:6;18615:11;:18;18627:5;18615:18;;;;;;;;;;;;;;;:27;18634:7;18615:27;;;;;;;;;;;;;;;:36;;;;18683:7;18667:32;;18676:5;18667:32;;;18692:6;18667:32;;;;;;:::i;:::-;;;;;;;;18327:380;;;:::o;15546:733::-;15704:1;15686:20;;:6;:20;;;15678:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15788:1;15767:23;;:9;:23;;;15759:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15843:47;15864:6;15872:9;15883:6;15843:20;:47::i;:::-;15903:21;15927:9;:17;15937:6;15927:17;;;;;;;;;;;;;;;;15903:41;;15980:6;15963:13;:23;;15955:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16101:6;16085:13;:22;16065:9;:17;16075:6;16065:17;;;;;;;;;;;;;;;:42;;;;16153:6;16129:9;:20;16139:9;16129:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;16194:9;16177:35;;16186:6;16177:35;;;16205:6;16177:35;;;;;;:::i;:::-;;;;;;;;16225:46;16245:6;16253:9;16264:6;16225:19;:46::i;:::-;15667:612;15546:733;;;:::o;17298:591::-;17401:1;17382:21;;:7;:21;;;17374:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17454:49;17475:7;17492:1;17496:6;17454:20;:49::i;:::-;17516:22;17541:9;:18;17551:7;17541:18;;;;;;;;;;;;;;;;17516:43;;17596:6;17578:14;:24;;17570:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17715:6;17698:14;:23;17677:9;:18;17687:7;17677:18;;;;;;;;;;;;;;;:44;;;;17759:6;17743:12;;:22;;;;;;;:::i;:::-;;;;;;;;17809:1;17783:37;;17792:7;17783:37;;;17813:6;17783:37;;;;;;:::i;:::-;;;;;;;;17833:48;17853:7;17870:1;17874:6;17833:19;:48::i;:::-;17363:526;17298:591;;:::o;4226:191::-;4300:16;4319:6;;;;;;;;;;;4300:25;;4345:8;4336:6;;:17;;;;;;;;;;;;;;;;;;4400:8;4369:40;;4390:8;4369:40;;;;;;;;;;;;4289:128;4226:191;:::o;23615:178::-;23751:19;:24;;;;;;;;;;;;;;23740:53;23615:178;;;:::o;21247:567::-;21399:10;:14;21410:2;21399:14;;;;;;;;;;;;;;;;;;;;;;;;;21398:15;:36;;;;;21418:10;:16;21429:4;21418:16;;;;;;;;;;;;;;;;;;;;;;;;;21417:17;21398:36;21390:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21492:1;21467:27;;:13;;;;;;;;;;;:27;;;21463:148;;21527:7;:5;:7::i;:::-;21519:15;;:4;:15;;;:32;;;;21544:7;:5;:7::i;:::-;21538:13;;:2;:13;;;21519:32;21511:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21593:7;;21463:148;21627:7;;;;;;;;;;;:32;;;;;21646:13;;;;;;;;;;;21638:21;;:4;:21;;;21627:32;21623:184;;;21716:16;;21706:6;21684:19;21700:2;21684:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;21768:16;;21758:6;21736:19;21752:2;21736:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;21684:100;21676:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;21623:184;21247:567;;;;:::o;20036:124::-;;;;:::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;523:117::-;632:1;629;622:12;769:126;806:7;846:42;839:5;835:54;824:65;;769:126;;;:::o;901:96::-;938:7;967:24;985:5;967:24;:::i;:::-;956:35;;901:96;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:99::-;1663:6;1697:5;1691:12;1681:22;;1611:99;;;:::o;1716:169::-;1800:11;1834:6;1829:3;1822:19;1874:4;1869:3;1865:14;1850:29;;1716:169;;;;:::o;1891:246::-;1972:1;1982:113;1996:6;1993:1;1990:13;1982:113;;;2081:1;2076:3;2072:11;2066:18;2062:1;2057:3;2053:11;2046:39;2018:2;2015:1;2011:10;2006:15;;1982:113;;;2129:1;2120:6;2115:3;2111:16;2104:27;1953:184;1891:246;;;:::o;2143:102::-;2184:6;2235:2;2231:7;2226:2;2219:5;2215:14;2211:28;2201:38;;2143:102;;;:::o;2251:377::-;2339:3;2367:39;2400:5;2367:39;:::i;:::-;2422:71;2486:6;2481:3;2422:71;:::i;:::-;2415:78;;2502:65;2560:6;2555:3;2548:4;2541:5;2537:16;2502:65;:::i;:::-;2592:29;2614:6;2592:29;:::i;:::-;2587:3;2583:39;2576:46;;2343:285;2251:377;;;;:::o;2634:313::-;2747:4;2785:2;2774:9;2770:18;2762:26;;2834:9;2828:4;2824:20;2820:1;2809:9;2805:17;2798:47;2862:78;2935:4;2926:6;2862:78;:::i;:::-;2854:86;;2634:313;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:86::-;5128:7;5168:4;5161:5;5157:16;5146:27;;5093:86;;;:::o;5185:112::-;5268:22;5284:5;5268:22;:::i;:::-;5263:3;5256:35;5185:112;;:::o;5303:214::-;5392:4;5430:2;5419:9;5415:18;5407:26;;5443:67;5507:1;5496:9;5492:17;5483:6;5443:67;:::i;:::-;5303:214;;;;:::o;5523:474::-;5591:6;5599;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5901:2;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5872:118;5523:474;;;;;:::o;6003:114::-;6070:6;6104:5;6098:12;6088:22;;6003:114;;;:::o;6123:184::-;6222:11;6256:6;6251:3;6244:19;6296:4;6291:3;6287:14;6272:29;;6123:184;;;;:::o;6313:132::-;6380:4;6403:3;6395:11;;6433:4;6428:3;6424:14;6416:22;;6313:132;;;:::o;6451:108::-;6528:24;6546:5;6528:24;:::i;:::-;6523:3;6516:37;6451:108;;:::o;6565:179::-;6634:10;6655:46;6697:3;6689:6;6655:46;:::i;:::-;6733:4;6728:3;6724:14;6710:28;;6565:179;;;;:::o;6750:113::-;6820:4;6852;6847:3;6843:14;6835:22;;6750:113;;;:::o;6899:732::-;7018:3;7047:54;7095:5;7047:54;:::i;:::-;7117:86;7196:6;7191:3;7117:86;:::i;:::-;7110:93;;7227:56;7277:5;7227:56;:::i;:::-;7306:7;7337:1;7322:284;7347:6;7344:1;7341:13;7322:284;;;7423:6;7417:13;7450:63;7509:3;7494:13;7450:63;:::i;:::-;7443:70;;7536:60;7589:6;7536:60;:::i;:::-;7526:70;;7382:224;7369:1;7366;7362:9;7357:14;;7322:284;;;7326:14;7622:3;7615:10;;7023:608;;;6899:732;;;;:::o;7637:483::-;7808:4;7846:2;7835:9;7831:18;7823:26;;7859:71;7927:1;7916:9;7912:17;7903:6;7859:71;:::i;:::-;7977:9;7971:4;7967:20;7962:2;7951:9;7947:18;7940:48;8005:108;8108:4;8099:6;8005:108;:::i;:::-;7997:116;;7637:483;;;;;:::o;8126:116::-;8196:21;8211:5;8196:21;:::i;:::-;8189:5;8186:32;8176:60;;8232:1;8229;8222:12;8176:60;8126:116;:::o;8248:133::-;8291:5;8329:6;8316:20;8307:29;;8345:30;8369:5;8345:30;:::i;:::-;8248:133;;;;:::o;8387:468::-;8452:6;8460;8509:2;8497:9;8488:7;8484:23;8480:32;8477:119;;;8515:79;;:::i;:::-;8477:119;8635:1;8660:53;8705:7;8696:6;8685:9;8681:22;8660:53;:::i;:::-;8650:63;;8606:117;8762:2;8788:50;8830:7;8821:6;8810:9;8806:22;8788:50;:::i;:::-;8778:60;;8733:115;8387:468;;;;;:::o;8861:118::-;8948:24;8966:5;8948:24;:::i;:::-;8943:3;8936:37;8861:118;;:::o;8985:222::-;9078:4;9116:2;9105:9;9101:18;9093:26;;9129:71;9197:1;9186:9;9182:17;9173:6;9129:71;:::i;:::-;8985:222;;;;:::o;9213:619::-;9290:6;9298;9306;9355:2;9343:9;9334:7;9330:23;9326:32;9323:119;;;9361:79;;:::i;:::-;9323:119;9481:1;9506:53;9551:7;9542:6;9531:9;9527:22;9506:53;:::i;:::-;9496:63;;9452:117;9608:2;9634:53;9679:7;9670:6;9659:9;9655:22;9634:53;:::i;:::-;9624:63;;9579:118;9736:2;9762:53;9807:7;9798:6;9787:9;9783:22;9762:53;:::i;:::-;9752:63;;9707:118;9213:619;;;;;:::o;9838:124::-;9915:6;9949:5;9943:12;9933:22;;9838:124;;;:::o;9968:194::-;10077:11;10111:6;10106:3;10099:19;10151:4;10146:3;10142:14;10127:29;;9968:194;;;;:::o;10168:142::-;10245:4;10268:3;10260:11;;10298:4;10293:3;10289:14;10281:22;;10168:142;;;:::o;10316:159::-;10390:11;10424:6;10419:3;10412:19;10464:4;10459:3;10455:14;10440:29;;10316:159;;;;:::o;10481:357::-;10559:3;10587:39;10620:5;10587:39;:::i;:::-;10642:61;10696:6;10691:3;10642:61;:::i;:::-;10635:68;;10712:65;10770:6;10765:3;10758:4;10751:5;10747:16;10712:65;:::i;:::-;10802:29;10824:6;10802:29;:::i;:::-;10797:3;10793:39;10786:46;;10563:275;10481:357;;;;:::o;10844:196::-;10933:10;10968:66;11030:3;11022:6;10968:66;:::i;:::-;10954:80;;10844:196;;;;:::o;11046:123::-;11126:4;11158;11153:3;11149:14;11141:22;;11046:123;;;:::o;11203:991::-;11342:3;11371:64;11429:5;11371:64;:::i;:::-;11451:96;11540:6;11535:3;11451:96;:::i;:::-;11444:103;;11573:3;11618:4;11610:6;11606:17;11601:3;11597:27;11648:66;11708:5;11648:66;:::i;:::-;11737:7;11768:1;11753:396;11778:6;11775:1;11772:13;11753:396;;;11849:9;11843:4;11839:20;11834:3;11827:33;11900:6;11894:13;11928:84;12007:4;11992:13;11928:84;:::i;:::-;11920:92;;12035:70;12098:6;12035:70;:::i;:::-;12025:80;;12134:4;12129:3;12125:14;12118:21;;11813:336;11800:1;11797;11793:9;11788:14;;11753:396;;;11757:14;12165:4;12158:11;;12185:3;12178:10;;11347:847;;;;;11203:991;;;;:::o;12200:523::-;12391:4;12429:2;12418:9;12414:18;12406:26;;12442:71;12510:1;12499:9;12495:17;12486:6;12442:71;:::i;:::-;12560:9;12554:4;12550:20;12545:2;12534:9;12530:18;12523:48;12588:128;12711:4;12702:6;12588:128;:::i;:::-;12580:136;;12200:523;;;;;:::o;12729:474::-;12797:6;12805;12854:2;12842:9;12833:7;12829:23;12825:32;12822:119;;;12860:79;;:::i;:::-;12822:119;12980:1;13005:53;13050:7;13041:6;13030:9;13026:22;13005:53;:::i;:::-;12995:63;;12951:117;13107:2;13133:53;13178:7;13169:6;13158:9;13154:22;13133:53;:::i;:::-;13123:63;;13078:118;12729:474;;;;;:::o;13209:::-;13277:6;13285;13334:2;13322:9;13313:7;13309:23;13305:32;13302:119;;;13340:79;;:::i;:::-;13302:119;13460:1;13485:53;13530:7;13521:6;13510:9;13506:22;13485:53;:::i;:::-;13475:63;;13431:117;13587:2;13613:53;13658:7;13649:6;13638:9;13634:22;13613:53;:::i;:::-;13603:63;;13558:118;13209:474;;;;;:::o;13689:180::-;13737:77;13734:1;13727:88;13834:4;13831:1;13824:15;13858:4;13855:1;13848:15;13875:320;13919:6;13956:1;13950:4;13946:12;13936:22;;14003:1;13997:4;13993:12;14024:18;14014:81;;14080:4;14072:6;14068:17;14058:27;;14014:81;14142:2;14134:6;14131:14;14111:18;14108:38;14105:84;;14161:18;;:::i;:::-;14105:84;13926:269;13875:320;;;:::o;14201:182::-;14341:34;14337:1;14329:6;14325:14;14318:58;14201:182;:::o;14389:366::-;14531:3;14552:67;14616:2;14611:3;14552:67;:::i;:::-;14545:74;;14628:93;14717:3;14628:93;:::i;:::-;14746:2;14741:3;14737:12;14730:19;;14389:366;;;:::o;14761:419::-;14927:4;14965:2;14954:9;14950:18;14942:26;;15014:9;15008:4;15004:20;15000:1;14989:9;14985:17;14978:47;15042:131;15168:4;15042:131;:::i;:::-;15034:139;;14761:419;;;:::o;15186:227::-;15326:34;15322:1;15314:6;15310:14;15303:58;15395:10;15390:2;15382:6;15378:15;15371:35;15186:227;:::o;15419:366::-;15561:3;15582:67;15646:2;15641:3;15582:67;:::i;:::-;15575:74;;15658:93;15747:3;15658:93;:::i;:::-;15776:2;15771:3;15767:12;15760:19;;15419:366;;;:::o;15791:419::-;15957:4;15995:2;15984:9;15980:18;15972:26;;16044:9;16038:4;16034:20;16030:1;16019:9;16015:17;16008:47;16072:131;16198:4;16072:131;:::i;:::-;16064:139;;15791:419;;;:::o;16216:180::-;16264:77;16261:1;16254:88;16361:4;16358:1;16351:15;16385:4;16382:1;16375:15;16402:410;16442:7;16465:20;16483:1;16465:20;:::i;:::-;16460:25;;16499:20;16517:1;16499:20;:::i;:::-;16494:25;;16554:1;16551;16547:9;16576:30;16594:11;16576:30;:::i;:::-;16565:41;;16755:1;16746:7;16742:15;16739:1;16736:22;16716:1;16709:9;16689:83;16666:139;;16785:18;;:::i;:::-;16666:139;16450:362;16402:410;;;;:::o;16818:180::-;16866:77;16863:1;16856:88;16963:4;16960:1;16953:15;16987:4;16984:1;16977:15;17004:191;17044:3;17063:20;17081:1;17063:20;:::i;:::-;17058:25;;17097:20;17115:1;17097:20;:::i;:::-;17092:25;;17140:1;17137;17133:9;17126:16;;17161:3;17158:1;17155:10;17152:36;;;17168:18;;:::i;:::-;17152:36;17004:191;;;;:::o;17201:194::-;17241:4;17261:20;17279:1;17261:20;:::i;:::-;17256:25;;17295:20;17313:1;17295:20;:::i;:::-;17290:25;;17339:1;17336;17332:9;17324:17;;17363:1;17357:4;17354:11;17351:37;;;17368:18;;:::i;:::-;17351:37;17201:194;;;;:::o;17401:180::-;17449:77;17446:1;17439:88;17546:4;17543:1;17536:15;17570:4;17567:1;17560:15;17587:224;17727:34;17723:1;17715:6;17711:14;17704:58;17796:7;17791:2;17783:6;17779:15;17772:32;17587:224;:::o;17817:366::-;17959:3;17980:67;18044:2;18039:3;17980:67;:::i;:::-;17973:74;;18056:93;18145:3;18056:93;:::i;:::-;18174:2;18169:3;18165:12;18158:19;;17817:366;;;:::o;18189:419::-;18355:4;18393:2;18382:9;18378:18;18370:26;;18442:9;18436:4;18432:20;18428:1;18417:9;18413:17;18406:47;18470:131;18596:4;18470:131;:::i;:::-;18462:139;;18189:419;;;:::o;18614:165::-;18754:17;18750:1;18742:6;18738:14;18731:41;18614:165;:::o;18785:366::-;18927:3;18948:67;19012:2;19007:3;18948:67;:::i;:::-;18941:74;;19024:93;19113:3;19024:93;:::i;:::-;19142:2;19137:3;19133:12;19126:19;;18785:366;;;:::o;19157:419::-;19323:4;19361:2;19350:9;19346:18;19338:26;;19410:9;19404:4;19400:20;19396:1;19385:9;19381:17;19374:47;19438:131;19564:4;19438:131;:::i;:::-;19430:139;;19157:419;;;:::o;19582:225::-;19722:34;19718:1;19710:6;19706:14;19699:58;19791:8;19786:2;19778:6;19774:15;19767:33;19582:225;:::o;19813:366::-;19955:3;19976:67;20040:2;20035:3;19976:67;:::i;:::-;19969:74;;20052:93;20141:3;20052:93;:::i;:::-;20170:2;20165:3;20161:12;20154:19;;19813:366;;;:::o;20185:419::-;20351:4;20389:2;20378:9;20374:18;20366:26;;20438:9;20432:4;20428:20;20424:1;20413:9;20409:17;20402:47;20466:131;20592:4;20466:131;:::i;:::-;20458:139;;20185:419;;;:::o;20610:223::-;20750:34;20746:1;20738:6;20734:14;20727:58;20819:6;20814:2;20806:6;20802:15;20795:31;20610:223;:::o;20839:366::-;20981:3;21002:67;21066:2;21061:3;21002:67;:::i;:::-;20995:74;;21078:93;21167:3;21078:93;:::i;:::-;21196:2;21191:3;21187:12;21180:19;;20839:366;;;:::o;21211:419::-;21377:4;21415:2;21404:9;21400:18;21392:26;;21464:9;21458:4;21454:20;21450:1;21439:9;21435:17;21428:47;21492:131;21618:4;21492:131;:::i;:::-;21484:139;;21211:419;;;:::o;21636:221::-;21776:34;21772:1;21764:6;21760:14;21753:58;21845:4;21840:2;21832:6;21828:15;21821:29;21636:221;:::o;21863:366::-;22005:3;22026:67;22090:2;22085:3;22026:67;:::i;:::-;22019:74;;22102:93;22191:3;22102:93;:::i;:::-;22220:2;22215:3;22211:12;22204:19;;21863:366;;;:::o;22235:419::-;22401:4;22439:2;22428:9;22424:18;22416:26;;22488:9;22482:4;22478:20;22474:1;22463:9;22459:17;22452:47;22516:131;22642:4;22516:131;:::i;:::-;22508:139;;22235:419;;;:::o;22660:224::-;22800:34;22796:1;22788:6;22784:14;22777:58;22869:7;22864:2;22856:6;22852:15;22845:32;22660:224;:::o;22890:366::-;23032:3;23053:67;23117:2;23112:3;23053:67;:::i;:::-;23046:74;;23129:93;23218:3;23129:93;:::i;:::-;23247:2;23242:3;23238:12;23231:19;;22890:366;;;:::o;23262:419::-;23428:4;23466:2;23455:9;23451:18;23443:26;;23515:9;23509:4;23505:20;23501:1;23490:9;23486:17;23479:47;23543:131;23669:4;23543:131;:::i;:::-;23535:139;;23262:419;;;:::o;23687:222::-;23827:34;23823:1;23815:6;23811:14;23804:58;23896:5;23891:2;23883:6;23879:15;23872:30;23687:222;:::o;23915:366::-;24057:3;24078:67;24142:2;24137:3;24078:67;:::i;:::-;24071:74;;24154:93;24243:3;24154:93;:::i;:::-;24272:2;24267:3;24263:12;24256:19;;23915:366;;;:::o;24287:419::-;24453:4;24491:2;24480:9;24476:18;24468:26;;24540:9;24534:4;24530:20;24526:1;24515:9;24511:17;24504:47;24568:131;24694:4;24568:131;:::i;:::-;24560:139;;24287:419;;;:::o;24712:225::-;24852:34;24848:1;24840:6;24836:14;24829:58;24921:8;24916:2;24908:6;24904:15;24897:33;24712:225;:::o;24943:366::-;25085:3;25106:67;25170:2;25165:3;25106:67;:::i;:::-;25099:74;;25182:93;25271:3;25182:93;:::i;:::-;25300:2;25295:3;25291:12;25284:19;;24943:366;;;:::o;25315:419::-;25481:4;25519:2;25508:9;25504:18;25496:26;;25568:9;25562:4;25558:20;25554:1;25543:9;25539:17;25532:47;25596:131;25722:4;25596:131;:::i;:::-;25588:139;;25315:419;;;:::o;25740:220::-;25880:34;25876:1;25868:6;25864:14;25857:58;25949:3;25944:2;25936:6;25932:15;25925:28;25740:220;:::o;25966:366::-;26108:3;26129:67;26193:2;26188:3;26129:67;:::i;:::-;26122:74;;26205:93;26294:3;26205:93;:::i;:::-;26323:2;26318:3;26314:12;26307:19;;25966:366;;;:::o;26338:419::-;26504:4;26542:2;26531:9;26527:18;26519:26;;26591:9;26585:4;26581:20;26577:1;26566:9;26562:17;26555:47;26619:131;26745:4;26619:131;:::i;:::-;26611:139;;26338:419;;;:::o;26763:221::-;26903:34;26899:1;26891:6;26887:14;26880:58;26972:4;26967:2;26959:6;26955:15;26948:29;26763:221;:::o;26990:366::-;27132:3;27153:67;27217:2;27212:3;27153:67;:::i;:::-;27146:74;;27229:93;27318:3;27229:93;:::i;:::-;27347:2;27342:3;27338:12;27331:19;;26990:366;;;:::o;27362:419::-;27528:4;27566:2;27555:9;27551:18;27543:26;;27615:9;27609:4;27605:20;27601:1;27590:9;27586:17;27579:47;27643:131;27769:4;27643:131;:::i;:::-;27635:139;;27362:419;;;:::o;27787:161::-;27927:13;27923:1;27915:6;27911:14;27904:37;27787:161;:::o;27954:366::-;28096:3;28117:67;28181:2;28176:3;28117:67;:::i;:::-;28110:74;;28193:93;28282:3;28193:93;:::i;:::-;28311:2;28306:3;28302:12;28295:19;;27954:366;;;:::o;28326:419::-;28492:4;28530:2;28519:9;28515:18;28507:26;;28579:9;28573:4;28569:20;28565:1;28554:9;28550:17;28543:47;28607:131;28733:4;28607:131;:::i;:::-;28599:139;;28326:419;;;:::o;28751:172::-;28891:24;28887:1;28879:6;28875:14;28868:48;28751:172;:::o;28929:366::-;29071:3;29092:67;29156:2;29151:3;29092:67;:::i;:::-;29085:74;;29168:93;29257:3;29168:93;:::i;:::-;29286:2;29281:3;29277:12;29270:19;;28929:366;;;:::o;29301:419::-;29467:4;29505:2;29494:9;29490:18;29482:26;;29554:9;29548:4;29544:20;29540:1;29529:9;29525:17;29518:47;29582:131;29708:4;29582:131;:::i;:::-;29574:139;;29301:419;;;:::o;29726:156::-;29866:8;29862:1;29854:6;29850:14;29843:32;29726:156;:::o;29888:365::-;30030:3;30051:66;30115:1;30110:3;30051:66;:::i;:::-;30044:73;;30126:93;30215:3;30126:93;:::i;:::-;30244:2;30239:3;30235:12;30228:19;;29888:365;;;:::o;30259:419::-;30425:4;30463:2;30452:9;30448:18;30440:26;;30512:9;30506:4;30502:20;30498:1;30487:9;30483:17;30476:47;30540:131;30666:4;30540:131;:::i;:::-;30532:139;;30259:419;;;:::o

Swarm Source

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