ETH Price: $2,382.68 (-1.12%)

Token

BRAZUERA BRASAO (BZ-B)
 

Overview

Max Total Supply

500 BZ-B

Holders

315

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0xf4aBEbC0db7d0A21A4c4360412E7015A05564785
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BrazueraBrasao

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-26
*/

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol


// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

// File: @openzeppelin/contracts/utils/Counters.sol


// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)

pragma solidity ^0.8.0;


/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
     * @dev Handles the receipt of a single ERC1155 token type. This function is
     * called at the end of a `safeTransferFrom` after the balance has been updated.
     *
     * NOTE: To accept the transfer, this must return
     * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     * (i.e. 0xf23a6e61, or its own function selector).
     *
     * @param operator The address which initiated the transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param id The ID of the token being transferred
     * @param value The amount of tokens being transferred
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
     */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
     * @dev Handles the receipt of a multiple ERC1155 token types. This function
     * is called at the end of a `safeBatchTransferFrom` after the balances have
     * been updated.
     *
     * NOTE: To accept the transfer(s), this must return
     * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     * (i.e. 0xbc197c81, or its own function selector).
     *
     * @param operator The address which initiated the batch transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param ids An array containing ids of each token being transferred (order and length must match values array)
     * @param values An array containing amounts of each token being transferred (order and length must match ids array)
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
     */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

// File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

// File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC1155/ERC1155.sol)

pragma solidity ^0.8.0;







/**
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    constructor(string memory uri_) {
        _setURI(uri_);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: address zero is not a valid owner");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC1155-isApprovedForAll}.
     */
    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not token owner or approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not token owner or approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _afterTokenTransfer(operator, from, to, ids, amounts, data);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _afterTokenTransfer(operator, from, to, ids, amounts, data);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        _balances[id][to] += amount;
        emit TransferSingle(operator, address(0), to, id, amount);

        _afterTokenTransfer(operator, address(0), to, ids, amounts, data);

        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _afterTokenTransfer(operator, address(0), to, ids, amounts, data);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `from`
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `from` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

        emit TransferSingle(operator, from, address(0), id, amount);

        _afterTokenTransfer(operator, from, address(0), ids, amounts, "");
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

        emit TransferBatch(operator, from, address(0), ids, amounts);

        _afterTokenTransfer(operator, from, address(0), ids, amounts, "");
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits an {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `ids` and `amounts` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    /**
     * @dev Hook that is called after any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non-ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non-ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

// File: BrazueraBrasao.sol



pragma solidity >=0.7.0 <0.9.0;
pragma abicoder v2;






contract BrazueraBrasao is ERC1155, Ownable {
    using Strings for uint256;

    string private baseURI;
    string private _name = "";
    string private _symbol = "";
    string private _contractUri;

    uint256 private maxSupply = 99;
    uint256 private FreeMintPerAddressLimit = 1;
    uint256 private qtdePerTokenMited = 500;

    bool private paused = false;
    bool private onlyWhitelisted = false;
    
    address[] public whitelistedAddresses;

    mapping(uint256 => uint256) private tokenMinted;
    mapping(address => bool) public whitelistClaimed;

    uint256[] tokenIds;
    
    
    address _contractOwner;
    uint256 public totalSupply = 0;

    event _transferSend(address _from, address _to, uint _amount);

    constructor(
    string memory _contractURI
    ) ERC1155("https://ipfs.io/ipfs/QmcS5zv8kPRG5Ax5Zb1o7AdGtTwmy887HxBgAM8wUhqeWP/1.json") {
        _contractUri = _contractURI;
        _contractOwner = msg.sender;
        _name = "BRAZUERA BRASAO";
        _symbol = "BZ-B";
    }

    function claim(
        uint256 _mintAmount,
        uint256 _number,
        address payable endUser
    ) public onlyOwner {
        require(!paused, "O contrato pausado");
        uint256 supply = totalSupplyMint();
        require(_mintAmount > 0, "Precisa mintar pelo menos 1 NFT");
        require(supply + _mintAmount <= maxSupply, "Quantidade limite de NFT excedida");
        require(qtdePerTokenMited >= tokenMinted[_number], "Mint para essa quantidade de gols encerrada");

        if(onlyWhitelisted) {
            require(!whitelistClaimed[endUser], "Address ja reivindicado");
            whitelistClaimed[endUser] = true;
        }

        uint256 updatedNumAvailableTokens = maxSupply - totalSupplyMint();
        
        _mint(endUser, 0, _mintAmount, "");

        updatedNumAvailableTokens = updatedNumAvailableTokens - _mintAmount;
        totalSupply++;
        tokenMinted[_number]++;
    }

    function claimBatch(
        address[] memory endUser,
        uint256[] memory amount
    ) public onlyOwner {
        require(!paused, "O contrato pausado");
        require(endUser.length == amount.length, "Matrizes invalidas");
        tokenIds = new uint256[](endUser.length);

        for (uint i = 0; i < endUser.length; i++) {
            _mint(endUser[i], 0, amount[i], '');
        }
    }

    function contractURI() external view returns (string memory) {
        return _contractUri;
    }

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

    function setContractURI(string memory contractURI_) external onlyOwner {
        _contractUri = contractURI_;
    }

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

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

    function _baseURI() internal view virtual returns (string memory) {
        return baseURI;
    }

    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        baseURI = _newBaseURI;
    }

    function pause(bool _state) public onlyOwner {
        paused = _state;
    }

    function withdraw() public payable onlyOwner {
        (bool os, ) = payable(owner()).call{value: address(this).balance}("");
        require(os);
    }

    function getMaxSupply() public view returns (uint) {
        return maxSupply;
    }

    function getBalance() public view returns (uint) {
        return msg.sender.balance;
    }

    function getBaseURI() public view returns (string memory) {
        return baseURI;
    }

    function isPaused() public view returns (bool) {
        return paused;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_transferSend","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"uint256","name":"_number","type":"uint256"},{"internalType":"address payable","name":"endUser","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"endUser","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"claimBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractURI_","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupplyMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

6080604052604051806020016040528060008152506005908162000024919062000555565b50604051806020016040528060008152506006908162000045919062000555565b50606360085560016009556101f4600a556000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff02191690831515021790555060006011553480156200009e57600080fd5b50604051620047a2380380620047a28339818101604052810190620000c49190620007a0565b6040518060800160405280604a815260200162004758604a9139620000ef81620001f860201b60201c565b5062000110620001046200020d60201b60201c565b6200021560201b60201c565b806007908162000121919062000555565b5033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600f81526020017f4252415a554552412042524153414f000000000000000000000000000000000081525060059081620001a9919062000555565b506040518060400160405280600481526020017f425a2d420000000000000000000000000000000000000000000000000000000081525060069081620001f0919062000555565b5050620007f1565b806002908162000209919062000555565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200035d57607f821691505b60208210810362000373576200037262000315565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200039e565b620003e986836200039e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000436620004306200042a8462000401565b6200040b565b62000401565b9050919050565b6000819050919050565b620004528362000415565b6200046a62000461826200043d565b848454620003ab565b825550505050565b600090565b6200048162000472565b6200048e81848462000447565b505050565b5b81811015620004b657620004aa60008262000477565b60018101905062000494565b5050565b601f8211156200050557620004cf8162000379565b620004da846200038e565b81016020851015620004ea578190505b62000502620004f9856200038e565b83018262000493565b50505b505050565b600082821c905092915050565b60006200052a600019846008026200050a565b1980831691505092915050565b600062000545838362000517565b9150826002028217905092915050565b6200056082620002db565b67ffffffffffffffff8111156200057c576200057b620002e6565b5b62000588825462000344565b62000595828285620004ba565b600060209050601f831160018114620005cd5760008415620005b8578287015190505b620005c4858262000537565b86555062000634565b601f198416620005dd8662000379565b60005b828110156200060757848901518255600182019150602085019450602081019050620005e0565b8683101562000627578489015162000623601f89168262000517565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b62000676826200065a565b810181811067ffffffffffffffff82111715620006985762000697620002e6565b5b80604052505050565b6000620006ad6200063c565b9050620006bb82826200066b565b919050565b600067ffffffffffffffff821115620006de57620006dd620002e6565b5b620006e9826200065a565b9050602081019050919050565b60005b8381101562000716578082015181840152602081019050620006f9565b60008484015250505050565b6000620007396200073384620006c0565b620006a1565b90508281526020810184848401111562000758576200075762000655565b5b62000765848285620006f6565b509392505050565b600082601f83011262000785576200078462000650565b5b81516200079784826020860162000722565b91505092915050565b600060208284031215620007b957620007b862000646565b5b600082015167ffffffffffffffff811115620007da57620007d96200064b565b5b620007e8848285016200076d565b91505092915050565b613f5780620008016000396000f3fe6080604052600436106101b65760003560e01c80638da5cb5b116100ec578063d7c2dfc81161008a578063e985e9c511610064578063e985e9c5146105ec578063f242432a14610629578063f2fde38b14610652578063f5b0778b1461067b576101b6565b8063d7c2dfc81461055b578063db4bec4414610584578063e8a3d485146105c1576101b6565b8063a22cb465116100c6578063a22cb465146104a1578063ac44ff31146104ca578063b187bd26146104f3578063ba4e5c491461051e576101b6565b80638da5cb5b14610422578063938e3d7b1461044d57806395d89b4114610476576101b6565b80632eb2c2d6116101595780634e1273f4116101335780634e1273f41461037a57806355f804b3146103b7578063714c5398146103e0578063715018a61461040b576101b6565b80632eb2c2d61461031c5780633ccfd60b146103455780634c0f38c21461034f576101b6565b806306fdde031161019557806306fdde031461025e5780630e89341c1461028957806312065fe0146102c657806318160ddd146102f1576101b6565b8062fdd58e146101bb57806301ffc9a7146101f857806302329a2914610235575b600080fd5b3480156101c757600080fd5b506101e260048036038101906101dd91906124c4565b6106a6565b6040516101ef9190612513565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a9190612586565b61076e565b60405161022c91906125ce565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190612615565b610850565b005b34801561026a57600080fd5b50610273610875565b60405161028091906126d2565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab91906126f4565b610907565b6040516102bd91906126d2565b60405180910390f35b3480156102d257600080fd5b506102db61099b565b6040516102e89190612513565b60405180910390f35b3480156102fd57600080fd5b506103066109ba565b6040516103139190612513565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061291e565b6109c0565b005b61034d610a61565b005b34801561035b57600080fd5b50610364610ae9565b6040516103719190612513565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612ab0565b610af3565b6040516103ae9190612be6565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612ca9565b610c0c565b005b3480156103ec57600080fd5b506103f5610c27565b60405161040291906126d2565b60405180910390f35b34801561041757600080fd5b50610420610cb9565b005b34801561042e57600080fd5b50610437610ccd565b6040516104449190612d01565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612ca9565b610cf7565b005b34801561048257600080fd5b5061048b610d12565b60405161049891906126d2565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190612d1c565b610da4565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190612d9a565b610dba565b005b3480156104ff57600080fd5b5061050861108f565b60405161051591906125ce565b60405180910390f35b34801561052a57600080fd5b50610545600480360381019061054091906126f4565b6110a6565b6040516105529190612d01565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190612ab0565b6110e5565b005b34801561059057600080fd5b506105ab60048036038101906105a69190612ded565b611255565b6040516105b891906125ce565b60405180910390f35b3480156105cd57600080fd5b506105d6611275565b6040516105e391906126d2565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612e1a565b611307565b60405161062091906125ce565b60405180910390f35b34801561063557600080fd5b50610650600480360381019061064b9190612e5a565b61139b565b005b34801561065e57600080fd5b5061067960048036038101906106749190612ded565b61143c565b005b34801561068757600080fd5b506106906114bf565b60405161069d9190612513565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90612f63565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061083957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108495750610848826114c9565b5b9050919050565b610858611533565b80600b60006101000a81548160ff02191690831515021790555050565b60606005805461088490612fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090612fb2565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60606002805461091690612fb2565b80601f016020809104026020016040519081016040528092919081815260200182805461094290612fb2565b801561098f5780601f106109645761010080835404028352916020019161098f565b820191906000526020600020905b81548152906001019060200180831161097257829003601f168201915b50505050509050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1631905090565b60115481565b6109c86115b1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a0e5750610a0d85610a086115b1565b611307565b5b610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490613055565b60405180910390fd5b610a5a85858585856115b9565b5050505050565b610a69611533565b6000610a73610ccd565b73ffffffffffffffffffffffffffffffffffffffff1647604051610a96906130a6565b60006040518083038185875af1925050503d8060008114610ad3576040519150601f19603f3d011682016040523d82523d6000602084013e610ad8565b606091505b5050905080610ae657600080fd5b50565b6000600854905090565b60608151835114610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b309061312d565b60405180910390fd5b6000835167ffffffffffffffff811115610b5657610b55612726565b5b604051908082528060200260200182016040528015610b845781602001602082028036833780820191505090505b50905060005b8451811015610c0157610bd1858281518110610ba957610ba861314d565b5b6020026020010151858381518110610bc457610bc361314d565b5b60200260200101516106a6565b828281518110610be457610be361314d565b5b60200260200101818152505080610bfa906131ab565b9050610b8a565b508091505092915050565b610c14611533565b8060049081610c23919061339f565b5050565b606060048054610c3690612fb2565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6290612fb2565b8015610caf5780601f10610c8457610100808354040283529160200191610caf565b820191906000526020600020905b815481529060010190602001808311610c9257829003601f168201915b5050505050905090565b610cc1611533565b610ccb60006118da565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cff611533565b8060079081610d0e919061339f565b5050565b606060068054610d2190612fb2565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d90612fb2565b8015610d9a5780601f10610d6f57610100808354040283529160200191610d9a565b820191906000526020600020905b815481529060010190602001808311610d7d57829003601f168201915b5050505050905090565b610db6610daf6115b1565b83836119a0565b5050565b610dc2611533565b600b60009054906101000a900460ff1615610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906134bd565b60405180910390fd5b6000610e1c6114bf565b905060008411610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613529565b60405180910390fd5b6008548482610e709190613549565b1115610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea8906135ef565b60405180910390fd5b600d600084815260200190815260200160002054600a541015610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0090613681565b60405180910390fd5b600b60019054906101000a900460ff161561100457600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa2906136ed565b60405180910390fd5b6001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061100e6114bf565b60085461101b919061370d565b90506110398360008760405180602001604052806000815250611b0c565b8481611045919061370d565b90506011600081548092919061105a906131ab565b9190505550600d60008581526020019081526020016000206000815480929190611083906131ab565b91905055505050505050565b6000600b60009054906101000a900460ff16905090565b600c81815481106110b657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ed611533565b600b60009054906101000a900460ff161561113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906134bd565b60405180910390fd5b8051825114611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061378d565b60405180910390fd5b815167ffffffffffffffff81111561119c5761119b612726565b5b6040519080825280602002602001820160405280156111ca5781602001602082028036833780820191505090505b50600f90805190602001906111e09291906123b2565b5060005b82518110156112505761123d8382815181106112035761120261314d565b5b602002602001015160008484815181106112205761121f61314d565b5b602002602001015160405180602001604052806000815250611b0c565b8080611248906131ab565b9150506111e4565b505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60606007805461128490612fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090612fb2565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113a36115b1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113e957506113e8856113e36115b1565b611307565b5b611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f90613055565b60405180910390fd5b6114358585858585611cbc565b5050505050565b611444611533565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa9061381f565b60405180910390fd5b6114bc816118da565b50565b6000601154905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61153b6115b1565b73ffffffffffffffffffffffffffffffffffffffff16611559610ccd565b73ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a69061388b565b60405180910390fd5b565b600033905090565b81518351146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f49061391d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361166c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611663906139af565b60405180910390fd5b60006116766115b1565b9050611686818787878787611f57565b60005b84518110156118375760008582815181106116a7576116a661314d565b5b6020026020010151905060008583815181106116c6576116c561314d565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90613a41565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461181c9190613549565b9250508190555050505080611830906131ab565b9050611689565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118ae929190613a61565b60405180910390a46118c4818787878787611f5f565b6118d2818787878787611f67565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613b0a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611aff91906125ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613b9c565b60405180910390fd5b6000611b856115b1565b90506000611b928561213e565b90506000611b9f8561213e565b9050611bb083600089858589611f57565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0f9190613549565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611c8d929190613bbc565b60405180910390a4611ca483600089858589611f5f565b611cb3836000898989896121b8565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d22906139af565b60405180910390fd5b6000611d356115b1565b90506000611d428561213e565b90506000611d4f8561213e565b9050611d5f838989858589611f57565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90613a41565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eab9190613549565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611f28929190613bbc565b60405180910390a4611f3e848a8a86868a611f5f565b611f4c848a8a8a8a8a6121b8565b505050505050505050565b505050505050565b505050505050565b611f868473ffffffffffffffffffffffffffffffffffffffff1661238f565b15612136578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611fcc959493929190613c3a565b6020604051808303816000875af192505050801561200857506040513d601f19601f820116820180604052508101906120059190613cb7565b60015b6120ad57612014613cf1565b806308c379a0036120705750612028613d13565b806120335750612072565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206791906126d2565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a490613e15565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90613ea7565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561215d5761215c612726565b5b60405190808252806020026020018201604052801561218b5781602001602082028036833780820191505090505b50905082816000815181106121a3576121a261314d565b5b60200260200101818152505080915050919050565b6121d78473ffffffffffffffffffffffffffffffffffffffff1661238f565b15612387578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161221d959493929190613ec7565b6020604051808303816000875af192505050801561225957506040513d601f19601f820116820180604052508101906122569190613cb7565b60015b6122fe57612265613cf1565b806308c379a0036122c15750612279613d13565b8061228457506122c3565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b891906126d2565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590613e15565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90613ea7565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280548282559060005260206000209081019282156123ee579160200282015b828111156123ed5782518255916020019190600101906123d2565b5b5090506123fb91906123ff565b5090565b5b80821115612418576000816000905550600101612400565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245b82612430565b9050919050565b61246b81612450565b811461247657600080fd5b50565b60008135905061248881612462565b92915050565b6000819050919050565b6124a18161248e565b81146124ac57600080fd5b50565b6000813590506124be81612498565b92915050565b600080604083850312156124db576124da612426565b5b60006124e985828601612479565b92505060206124fa858286016124af565b9150509250929050565b61250d8161248e565b82525050565b60006020820190506125286000830184612504565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125638161252e565b811461256e57600080fd5b50565b6000813590506125808161255a565b92915050565b60006020828403121561259c5761259b612426565b5b60006125aa84828501612571565b91505092915050565b60008115159050919050565b6125c8816125b3565b82525050565b60006020820190506125e360008301846125bf565b92915050565b6125f2816125b3565b81146125fd57600080fd5b50565b60008135905061260f816125e9565b92915050565b60006020828403121561262b5761262a612426565b5b600061263984828501612600565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561267c578082015181840152602081019050612661565b60008484015250505050565b6000601f19601f8301169050919050565b60006126a482612642565b6126ae818561264d565b93506126be81856020860161265e565b6126c781612688565b840191505092915050565b600060208201905081810360008301526126ec8184612699565b905092915050565b60006020828403121561270a57612709612426565b5b6000612718848285016124af565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61275e82612688565b810181811067ffffffffffffffff8211171561277d5761277c612726565b5b80604052505050565b600061279061241c565b905061279c8282612755565b919050565b600067ffffffffffffffff8211156127bc576127bb612726565b5b602082029050602081019050919050565b600080fd5b60006127e56127e0846127a1565b612786565b90508083825260208201905060208402830185811115612808576128076127cd565b5b835b81811015612831578061281d88826124af565b84526020840193505060208101905061280a565b5050509392505050565b600082601f8301126128505761284f612721565b5b81356128608482602086016127d2565b91505092915050565b600080fd5b600067ffffffffffffffff82111561288957612888612726565b5b61289282612688565b9050602081019050919050565b82818337600083830152505050565b60006128c16128bc8461286e565b612786565b9050828152602081018484840111156128dd576128dc612869565b5b6128e884828561289f565b509392505050565b600082601f83011261290557612904612721565b5b81356129158482602086016128ae565b91505092915050565b600080600080600060a0868803121561293a57612939612426565b5b600061294888828901612479565b955050602061295988828901612479565b945050604086013567ffffffffffffffff81111561297a5761297961242b565b5b6129868882890161283b565b935050606086013567ffffffffffffffff8111156129a7576129a661242b565b5b6129b38882890161283b565b925050608086013567ffffffffffffffff8111156129d4576129d361242b565b5b6129e0888289016128f0565b9150509295509295909350565b600067ffffffffffffffff821115612a0857612a07612726565b5b602082029050602081019050919050565b6000612a2c612a27846129ed565b612786565b90508083825260208201905060208402830185811115612a4f57612a4e6127cd565b5b835b81811015612a785780612a648882612479565b845260208401935050602081019050612a51565b5050509392505050565b600082601f830112612a9757612a96612721565b5b8135612aa7848260208601612a19565b91505092915050565b60008060408385031215612ac757612ac6612426565b5b600083013567ffffffffffffffff811115612ae557612ae461242b565b5b612af185828601612a82565b925050602083013567ffffffffffffffff811115612b1257612b1161242b565b5b612b1e8582860161283b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b5d8161248e565b82525050565b6000612b6f8383612b54565b60208301905092915050565b6000602082019050919050565b6000612b9382612b28565b612b9d8185612b33565b9350612ba883612b44565b8060005b83811015612bd9578151612bc08882612b63565b9750612bcb83612b7b565b925050600181019050612bac565b5085935050505092915050565b60006020820190508181036000830152612c008184612b88565b905092915050565b600067ffffffffffffffff821115612c2357612c22612726565b5b612c2c82612688565b9050602081019050919050565b6000612c4c612c4784612c08565b612786565b905082815260208101848484011115612c6857612c67612869565b5b612c7384828561289f565b509392505050565b600082601f830112612c9057612c8f612721565b5b8135612ca0848260208601612c39565b91505092915050565b600060208284031215612cbf57612cbe612426565b5b600082013567ffffffffffffffff811115612cdd57612cdc61242b565b5b612ce984828501612c7b565b91505092915050565b612cfb81612450565b82525050565b6000602082019050612d166000830184612cf2565b92915050565b60008060408385031215612d3357612d32612426565b5b6000612d4185828601612479565b9250506020612d5285828601612600565b9150509250929050565b6000612d6782612430565b9050919050565b612d7781612d5c565b8114612d8257600080fd5b50565b600081359050612d9481612d6e565b92915050565b600080600060608486031215612db357612db2612426565b5b6000612dc1868287016124af565b9350506020612dd2868287016124af565b9250506040612de386828701612d85565b9150509250925092565b600060208284031215612e0357612e02612426565b5b6000612e1184828501612479565b91505092915050565b60008060408385031215612e3157612e30612426565b5b6000612e3f85828601612479565b9250506020612e5085828601612479565b9150509250929050565b600080600080600060a08688031215612e7657612e75612426565b5b6000612e8488828901612479565b9550506020612e9588828901612479565b9450506040612ea6888289016124af565b9350506060612eb7888289016124af565b925050608086013567ffffffffffffffff811115612ed857612ed761242b565b5b612ee4888289016128f0565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b6000612f4d602a8361264d565b9150612f5882612ef1565b604082019050919050565b60006020820190508181036000830152612f7c81612f40565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fca57607f821691505b602082108103612fdd57612fdc612f83565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b600061303f602e8361264d565b915061304a82612fe3565b604082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b600081905092915050565b50565b6000613090600083613075565b915061309b82613080565b600082019050919050565b60006130b182613083565b9150819050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b600061311760298361264d565b9150613122826130bb565b604082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131b68261248e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131e8576131e761317c565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613218565b61325f8683613218565b95508019841693508086168417925050509392505050565b6000819050919050565b600061329c6132976132928461248e565b613277565b61248e565b9050919050565b6000819050919050565b6132b683613281565b6132ca6132c2826132a3565b848454613225565b825550505050565b600090565b6132df6132d2565b6132ea8184846132ad565b505050565b5b8181101561330e576133036000826132d7565b6001810190506132f0565b5050565b601f82111561335357613324816131f3565b61332d84613208565b8101602085101561333c578190505b61335061334885613208565b8301826132ef565b50505b505050565b600082821c905092915050565b600061337660001984600802613358565b1980831691505092915050565b600061338f8383613365565b9150826002028217905092915050565b6133a882612642565b67ffffffffffffffff8111156133c1576133c0612726565b5b6133cb8254612fb2565b6133d6828285613312565b600060209050601f83116001811461340957600084156133f7578287015190505b6134018582613383565b865550613469565b601f198416613417866131f3565b60005b8281101561343f5784890151825560018201915060208501945060208101905061341a565b8683101561345c5784890151613458601f891682613365565b8355505b6001600288020188555050505b505050505050565b7f4f20636f6e747261746f207061757361646f0000000000000000000000000000600082015250565b60006134a760128361264d565b91506134b282613471565b602082019050919050565b600060208201905081810360008301526134d68161349a565b9050919050565b7f50726563697361206d696e7461722070656c6f206d656e6f732031204e465400600082015250565b6000613513601f8361264d565b915061351e826134dd565b602082019050919050565b6000602082019050818103600083015261354281613506565b9050919050565b60006135548261248e565b915061355f8361248e565b92508282019050808211156135775761357661317c565b5b92915050565b7f5175616e746964616465206c696d697465206465204e4654206578636564696460008201527f6100000000000000000000000000000000000000000000000000000000000000602082015250565b60006135d960218361264d565b91506135e48261357d565b604082019050919050565b60006020820190508181036000830152613608816135cc565b9050919050565b7f4d696e7420706172612065737361207175616e74696461646520646520676f6c60008201527f7320656e63657272616461000000000000000000000000000000000000000000602082015250565b600061366b602b8361264d565b91506136768261360f565b604082019050919050565b6000602082019050818103600083015261369a8161365e565b9050919050565b7f41646472657373206a612072656976696e64696361646f000000000000000000600082015250565b60006136d760178361264d565b91506136e2826136a1565b602082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b60006137188261248e565b91506137238361248e565b925082820390508181111561373b5761373a61317c565b5b92915050565b7f4d617472697a657320696e76616c696461730000000000000000000000000000600082015250565b600061377760128361264d565b915061378282613741565b602082019050919050565b600060208201905081810360008301526137a68161376a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061380960268361264d565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061387560208361264d565b91506138808261383f565b602082019050919050565b600060208201905081810360008301526138a481613868565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600061390760288361264d565b9150613912826138ab565b604082019050919050565b60006020820190508181036000830152613936816138fa565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061399960258361264d565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613a2b602a8361264d565b9150613a36826139cf565b604082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b60006040820190508181036000830152613a7b8185612b88565b90508181036020830152613a8f8184612b88565b90509392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613af460298361264d565b9150613aff82613a98565b604082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8660218361264d565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b6000604082019050613bd16000830185612504565b613bde6020830184612504565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000613c0c82613be5565b613c168185613bf0565b9350613c2681856020860161265e565b613c2f81612688565b840191505092915050565b600060a082019050613c4f6000830188612cf2565b613c5c6020830187612cf2565b8181036040830152613c6e8186612b88565b90508181036060830152613c828185612b88565b90508181036080830152613c968184613c01565b90509695505050505050565b600081519050613cb18161255a565b92915050565b600060208284031215613ccd57613ccc612426565b5b6000613cdb84828501613ca2565b91505092915050565b60008160e01c9050919050565b600060033d1115613d105760046000803e613d0d600051613ce4565b90505b90565b600060443d10613da057613d2561241c565b60043d036004823e80513d602482011167ffffffffffffffff82111715613d4d575050613da0565b808201805167ffffffffffffffff811115613d6b5750505050613da0565b80602083010160043d038501811115613d88575050505050613da0565b613d9782602001850186612755565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000613dff60348361264d565b9150613e0a82613da3565b604082019050919050565b60006020820190508181036000830152613e2e81613df2565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613e9160288361264d565b9150613e9c82613e35565b604082019050919050565b60006020820190508181036000830152613ec081613e84565b9050919050565b600060a082019050613edc6000830188612cf2565b613ee96020830187612cf2565b613ef66040830186612504565b613f036060830185612504565b8181036080830152613f158184613c01565b9050969550505050505056fea26469706673582212209e36798381e7777405bf57ec64f14ec7e027d758cc93052ea3bdb26b169a89fd64736f6c6343000811003368747470733a2f2f697066732e696f2f697066732f516d6353357a76386b505247354178355a62316f374164477454776d7938383748784267414d38775568716557502f312e6a736f6e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005568747470733a2f2f697066732e696f2f697066732f516d566a5739647a7a6b506a6a554c324d585653764a35573646636a507a665369365333554b6b714e79525248632f636f6e74726163742d7572692e6a736f6e0000000000000000000000

Deployed Bytecode

0x6080604052600436106101b65760003560e01c80638da5cb5b116100ec578063d7c2dfc81161008a578063e985e9c511610064578063e985e9c5146105ec578063f242432a14610629578063f2fde38b14610652578063f5b0778b1461067b576101b6565b8063d7c2dfc81461055b578063db4bec4414610584578063e8a3d485146105c1576101b6565b8063a22cb465116100c6578063a22cb465146104a1578063ac44ff31146104ca578063b187bd26146104f3578063ba4e5c491461051e576101b6565b80638da5cb5b14610422578063938e3d7b1461044d57806395d89b4114610476576101b6565b80632eb2c2d6116101595780634e1273f4116101335780634e1273f41461037a57806355f804b3146103b7578063714c5398146103e0578063715018a61461040b576101b6565b80632eb2c2d61461031c5780633ccfd60b146103455780634c0f38c21461034f576101b6565b806306fdde031161019557806306fdde031461025e5780630e89341c1461028957806312065fe0146102c657806318160ddd146102f1576101b6565b8062fdd58e146101bb57806301ffc9a7146101f857806302329a2914610235575b600080fd5b3480156101c757600080fd5b506101e260048036038101906101dd91906124c4565b6106a6565b6040516101ef9190612513565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a9190612586565b61076e565b60405161022c91906125ce565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190612615565b610850565b005b34801561026a57600080fd5b50610273610875565b60405161028091906126d2565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab91906126f4565b610907565b6040516102bd91906126d2565b60405180910390f35b3480156102d257600080fd5b506102db61099b565b6040516102e89190612513565b60405180910390f35b3480156102fd57600080fd5b506103066109ba565b6040516103139190612513565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061291e565b6109c0565b005b61034d610a61565b005b34801561035b57600080fd5b50610364610ae9565b6040516103719190612513565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612ab0565b610af3565b6040516103ae9190612be6565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612ca9565b610c0c565b005b3480156103ec57600080fd5b506103f5610c27565b60405161040291906126d2565b60405180910390f35b34801561041757600080fd5b50610420610cb9565b005b34801561042e57600080fd5b50610437610ccd565b6040516104449190612d01565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612ca9565b610cf7565b005b34801561048257600080fd5b5061048b610d12565b60405161049891906126d2565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190612d1c565b610da4565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190612d9a565b610dba565b005b3480156104ff57600080fd5b5061050861108f565b60405161051591906125ce565b60405180910390f35b34801561052a57600080fd5b50610545600480360381019061054091906126f4565b6110a6565b6040516105529190612d01565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190612ab0565b6110e5565b005b34801561059057600080fd5b506105ab60048036038101906105a69190612ded565b611255565b6040516105b891906125ce565b60405180910390f35b3480156105cd57600080fd5b506105d6611275565b6040516105e391906126d2565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612e1a565b611307565b60405161062091906125ce565b60405180910390f35b34801561063557600080fd5b50610650600480360381019061064b9190612e5a565b61139b565b005b34801561065e57600080fd5b5061067960048036038101906106749190612ded565b61143c565b005b34801561068757600080fd5b506106906114bf565b60405161069d9190612513565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90612f63565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061083957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108495750610848826114c9565b5b9050919050565b610858611533565b80600b60006101000a81548160ff02191690831515021790555050565b60606005805461088490612fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090612fb2565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60606002805461091690612fb2565b80601f016020809104026020016040519081016040528092919081815260200182805461094290612fb2565b801561098f5780601f106109645761010080835404028352916020019161098f565b820191906000526020600020905b81548152906001019060200180831161097257829003601f168201915b50505050509050919050565b60003373ffffffffffffffffffffffffffffffffffffffff1631905090565b60115481565b6109c86115b1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a0e5750610a0d85610a086115b1565b611307565b5b610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490613055565b60405180910390fd5b610a5a85858585856115b9565b5050505050565b610a69611533565b6000610a73610ccd565b73ffffffffffffffffffffffffffffffffffffffff1647604051610a96906130a6565b60006040518083038185875af1925050503d8060008114610ad3576040519150601f19603f3d011682016040523d82523d6000602084013e610ad8565b606091505b5050905080610ae657600080fd5b50565b6000600854905090565b60608151835114610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b309061312d565b60405180910390fd5b6000835167ffffffffffffffff811115610b5657610b55612726565b5b604051908082528060200260200182016040528015610b845781602001602082028036833780820191505090505b50905060005b8451811015610c0157610bd1858281518110610ba957610ba861314d565b5b6020026020010151858381518110610bc457610bc361314d565b5b60200260200101516106a6565b828281518110610be457610be361314d565b5b60200260200101818152505080610bfa906131ab565b9050610b8a565b508091505092915050565b610c14611533565b8060049081610c23919061339f565b5050565b606060048054610c3690612fb2565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6290612fb2565b8015610caf5780601f10610c8457610100808354040283529160200191610caf565b820191906000526020600020905b815481529060010190602001808311610c9257829003601f168201915b5050505050905090565b610cc1611533565b610ccb60006118da565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cff611533565b8060079081610d0e919061339f565b5050565b606060068054610d2190612fb2565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d90612fb2565b8015610d9a5780601f10610d6f57610100808354040283529160200191610d9a565b820191906000526020600020905b815481529060010190602001808311610d7d57829003601f168201915b5050505050905090565b610db6610daf6115b1565b83836119a0565b5050565b610dc2611533565b600b60009054906101000a900460ff1615610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906134bd565b60405180910390fd5b6000610e1c6114bf565b905060008411610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613529565b60405180910390fd5b6008548482610e709190613549565b1115610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea8906135ef565b60405180910390fd5b600d600084815260200190815260200160002054600a541015610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0090613681565b60405180910390fd5b600b60019054906101000a900460ff161561100457600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa2906136ed565b60405180910390fd5b6001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061100e6114bf565b60085461101b919061370d565b90506110398360008760405180602001604052806000815250611b0c565b8481611045919061370d565b90506011600081548092919061105a906131ab565b9190505550600d60008581526020019081526020016000206000815480929190611083906131ab565b91905055505050505050565b6000600b60009054906101000a900460ff16905090565b600c81815481106110b657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ed611533565b600b60009054906101000a900460ff161561113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906134bd565b60405180910390fd5b8051825114611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061378d565b60405180910390fd5b815167ffffffffffffffff81111561119c5761119b612726565b5b6040519080825280602002602001820160405280156111ca5781602001602082028036833780820191505090505b50600f90805190602001906111e09291906123b2565b5060005b82518110156112505761123d8382815181106112035761120261314d565b5b602002602001015160008484815181106112205761121f61314d565b5b602002602001015160405180602001604052806000815250611b0c565b8080611248906131ab565b9150506111e4565b505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60606007805461128490612fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090612fb2565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113a36115b1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113e957506113e8856113e36115b1565b611307565b5b611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f90613055565b60405180910390fd5b6114358585858585611cbc565b5050505050565b611444611533565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa9061381f565b60405180910390fd5b6114bc816118da565b50565b6000601154905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61153b6115b1565b73ffffffffffffffffffffffffffffffffffffffff16611559610ccd565b73ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a69061388b565b60405180910390fd5b565b600033905090565b81518351146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f49061391d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361166c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611663906139af565b60405180910390fd5b60006116766115b1565b9050611686818787878787611f57565b60005b84518110156118375760008582815181106116a7576116a661314d565b5b6020026020010151905060008583815181106116c6576116c561314d565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90613a41565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461181c9190613549565b9250508190555050505080611830906131ab565b9050611689565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118ae929190613a61565b60405180910390a46118c4818787878787611f5f565b6118d2818787878787611f67565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613b0a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611aff91906125ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613b9c565b60405180910390fd5b6000611b856115b1565b90506000611b928561213e565b90506000611b9f8561213e565b9050611bb083600089858589611f57565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0f9190613549565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611c8d929190613bbc565b60405180910390a4611ca483600089858589611f5f565b611cb3836000898989896121b8565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d22906139af565b60405180910390fd5b6000611d356115b1565b90506000611d428561213e565b90506000611d4f8561213e565b9050611d5f838989858589611f57565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90613a41565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eab9190613549565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611f28929190613bbc565b60405180910390a4611f3e848a8a86868a611f5f565b611f4c848a8a8a8a8a6121b8565b505050505050505050565b505050505050565b505050505050565b611f868473ffffffffffffffffffffffffffffffffffffffff1661238f565b15612136578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611fcc959493929190613c3a565b6020604051808303816000875af192505050801561200857506040513d601f19601f820116820180604052508101906120059190613cb7565b60015b6120ad57612014613cf1565b806308c379a0036120705750612028613d13565b806120335750612072565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206791906126d2565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a490613e15565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90613ea7565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561215d5761215c612726565b5b60405190808252806020026020018201604052801561218b5781602001602082028036833780820191505090505b50905082816000815181106121a3576121a261314d565b5b60200260200101818152505080915050919050565b6121d78473ffffffffffffffffffffffffffffffffffffffff1661238f565b15612387578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161221d959493929190613ec7565b6020604051808303816000875af192505050801561225957506040513d601f19601f820116820180604052508101906122569190613cb7565b60015b6122fe57612265613cf1565b806308c379a0036122c15750612279613d13565b8061228457506122c3565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b891906126d2565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590613e15565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90613ea7565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280548282559060005260206000209081019282156123ee579160200282015b828111156123ed5782518255916020019190600101906123d2565b5b5090506123fb91906123ff565b5090565b5b80821115612418576000816000905550600101612400565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245b82612430565b9050919050565b61246b81612450565b811461247657600080fd5b50565b60008135905061248881612462565b92915050565b6000819050919050565b6124a18161248e565b81146124ac57600080fd5b50565b6000813590506124be81612498565b92915050565b600080604083850312156124db576124da612426565b5b60006124e985828601612479565b92505060206124fa858286016124af565b9150509250929050565b61250d8161248e565b82525050565b60006020820190506125286000830184612504565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125638161252e565b811461256e57600080fd5b50565b6000813590506125808161255a565b92915050565b60006020828403121561259c5761259b612426565b5b60006125aa84828501612571565b91505092915050565b60008115159050919050565b6125c8816125b3565b82525050565b60006020820190506125e360008301846125bf565b92915050565b6125f2816125b3565b81146125fd57600080fd5b50565b60008135905061260f816125e9565b92915050565b60006020828403121561262b5761262a612426565b5b600061263984828501612600565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561267c578082015181840152602081019050612661565b60008484015250505050565b6000601f19601f8301169050919050565b60006126a482612642565b6126ae818561264d565b93506126be81856020860161265e565b6126c781612688565b840191505092915050565b600060208201905081810360008301526126ec8184612699565b905092915050565b60006020828403121561270a57612709612426565b5b6000612718848285016124af565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61275e82612688565b810181811067ffffffffffffffff8211171561277d5761277c612726565b5b80604052505050565b600061279061241c565b905061279c8282612755565b919050565b600067ffffffffffffffff8211156127bc576127bb612726565b5b602082029050602081019050919050565b600080fd5b60006127e56127e0846127a1565b612786565b90508083825260208201905060208402830185811115612808576128076127cd565b5b835b81811015612831578061281d88826124af565b84526020840193505060208101905061280a565b5050509392505050565b600082601f8301126128505761284f612721565b5b81356128608482602086016127d2565b91505092915050565b600080fd5b600067ffffffffffffffff82111561288957612888612726565b5b61289282612688565b9050602081019050919050565b82818337600083830152505050565b60006128c16128bc8461286e565b612786565b9050828152602081018484840111156128dd576128dc612869565b5b6128e884828561289f565b509392505050565b600082601f83011261290557612904612721565b5b81356129158482602086016128ae565b91505092915050565b600080600080600060a0868803121561293a57612939612426565b5b600061294888828901612479565b955050602061295988828901612479565b945050604086013567ffffffffffffffff81111561297a5761297961242b565b5b6129868882890161283b565b935050606086013567ffffffffffffffff8111156129a7576129a661242b565b5b6129b38882890161283b565b925050608086013567ffffffffffffffff8111156129d4576129d361242b565b5b6129e0888289016128f0565b9150509295509295909350565b600067ffffffffffffffff821115612a0857612a07612726565b5b602082029050602081019050919050565b6000612a2c612a27846129ed565b612786565b90508083825260208201905060208402830185811115612a4f57612a4e6127cd565b5b835b81811015612a785780612a648882612479565b845260208401935050602081019050612a51565b5050509392505050565b600082601f830112612a9757612a96612721565b5b8135612aa7848260208601612a19565b91505092915050565b60008060408385031215612ac757612ac6612426565b5b600083013567ffffffffffffffff811115612ae557612ae461242b565b5b612af185828601612a82565b925050602083013567ffffffffffffffff811115612b1257612b1161242b565b5b612b1e8582860161283b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b5d8161248e565b82525050565b6000612b6f8383612b54565b60208301905092915050565b6000602082019050919050565b6000612b9382612b28565b612b9d8185612b33565b9350612ba883612b44565b8060005b83811015612bd9578151612bc08882612b63565b9750612bcb83612b7b565b925050600181019050612bac565b5085935050505092915050565b60006020820190508181036000830152612c008184612b88565b905092915050565b600067ffffffffffffffff821115612c2357612c22612726565b5b612c2c82612688565b9050602081019050919050565b6000612c4c612c4784612c08565b612786565b905082815260208101848484011115612c6857612c67612869565b5b612c7384828561289f565b509392505050565b600082601f830112612c9057612c8f612721565b5b8135612ca0848260208601612c39565b91505092915050565b600060208284031215612cbf57612cbe612426565b5b600082013567ffffffffffffffff811115612cdd57612cdc61242b565b5b612ce984828501612c7b565b91505092915050565b612cfb81612450565b82525050565b6000602082019050612d166000830184612cf2565b92915050565b60008060408385031215612d3357612d32612426565b5b6000612d4185828601612479565b9250506020612d5285828601612600565b9150509250929050565b6000612d6782612430565b9050919050565b612d7781612d5c565b8114612d8257600080fd5b50565b600081359050612d9481612d6e565b92915050565b600080600060608486031215612db357612db2612426565b5b6000612dc1868287016124af565b9350506020612dd2868287016124af565b9250506040612de386828701612d85565b9150509250925092565b600060208284031215612e0357612e02612426565b5b6000612e1184828501612479565b91505092915050565b60008060408385031215612e3157612e30612426565b5b6000612e3f85828601612479565b9250506020612e5085828601612479565b9150509250929050565b600080600080600060a08688031215612e7657612e75612426565b5b6000612e8488828901612479565b9550506020612e9588828901612479565b9450506040612ea6888289016124af565b9350506060612eb7888289016124af565b925050608086013567ffffffffffffffff811115612ed857612ed761242b565b5b612ee4888289016128f0565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b6000612f4d602a8361264d565b9150612f5882612ef1565b604082019050919050565b60006020820190508181036000830152612f7c81612f40565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fca57607f821691505b602082108103612fdd57612fdc612f83565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b600061303f602e8361264d565b915061304a82612fe3565b604082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b600081905092915050565b50565b6000613090600083613075565b915061309b82613080565b600082019050919050565b60006130b182613083565b9150819050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b600061311760298361264d565b9150613122826130bb565b604082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131b68261248e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131e8576131e761317c565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613218565b61325f8683613218565b95508019841693508086168417925050509392505050565b6000819050919050565b600061329c6132976132928461248e565b613277565b61248e565b9050919050565b6000819050919050565b6132b683613281565b6132ca6132c2826132a3565b848454613225565b825550505050565b600090565b6132df6132d2565b6132ea8184846132ad565b505050565b5b8181101561330e576133036000826132d7565b6001810190506132f0565b5050565b601f82111561335357613324816131f3565b61332d84613208565b8101602085101561333c578190505b61335061334885613208565b8301826132ef565b50505b505050565b600082821c905092915050565b600061337660001984600802613358565b1980831691505092915050565b600061338f8383613365565b9150826002028217905092915050565b6133a882612642565b67ffffffffffffffff8111156133c1576133c0612726565b5b6133cb8254612fb2565b6133d6828285613312565b600060209050601f83116001811461340957600084156133f7578287015190505b6134018582613383565b865550613469565b601f198416613417866131f3565b60005b8281101561343f5784890151825560018201915060208501945060208101905061341a565b8683101561345c5784890151613458601f891682613365565b8355505b6001600288020188555050505b505050505050565b7f4f20636f6e747261746f207061757361646f0000000000000000000000000000600082015250565b60006134a760128361264d565b91506134b282613471565b602082019050919050565b600060208201905081810360008301526134d68161349a565b9050919050565b7f50726563697361206d696e7461722070656c6f206d656e6f732031204e465400600082015250565b6000613513601f8361264d565b915061351e826134dd565b602082019050919050565b6000602082019050818103600083015261354281613506565b9050919050565b60006135548261248e565b915061355f8361248e565b92508282019050808211156135775761357661317c565b5b92915050565b7f5175616e746964616465206c696d697465206465204e4654206578636564696460008201527f6100000000000000000000000000000000000000000000000000000000000000602082015250565b60006135d960218361264d565b91506135e48261357d565b604082019050919050565b60006020820190508181036000830152613608816135cc565b9050919050565b7f4d696e7420706172612065737361207175616e74696461646520646520676f6c60008201527f7320656e63657272616461000000000000000000000000000000000000000000602082015250565b600061366b602b8361264d565b91506136768261360f565b604082019050919050565b6000602082019050818103600083015261369a8161365e565b9050919050565b7f41646472657373206a612072656976696e64696361646f000000000000000000600082015250565b60006136d760178361264d565b91506136e2826136a1565b602082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b60006137188261248e565b91506137238361248e565b925082820390508181111561373b5761373a61317c565b5b92915050565b7f4d617472697a657320696e76616c696461730000000000000000000000000000600082015250565b600061377760128361264d565b915061378282613741565b602082019050919050565b600060208201905081810360008301526137a68161376a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061380960268361264d565b9150613814826137ad565b604082019050919050565b60006020820190508181036000830152613838816137fc565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061387560208361264d565b91506138808261383f565b602082019050919050565b600060208201905081810360008301526138a481613868565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600061390760288361264d565b9150613912826138ab565b604082019050919050565b60006020820190508181036000830152613936816138fa565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061399960258361264d565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613a2b602a8361264d565b9150613a36826139cf565b604082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b60006040820190508181036000830152613a7b8185612b88565b90508181036020830152613a8f8184612b88565b90509392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613af460298361264d565b9150613aff82613a98565b604082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8660218361264d565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b6000604082019050613bd16000830185612504565b613bde6020830184612504565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000613c0c82613be5565b613c168185613bf0565b9350613c2681856020860161265e565b613c2f81612688565b840191505092915050565b600060a082019050613c4f6000830188612cf2565b613c5c6020830187612cf2565b8181036040830152613c6e8186612b88565b90508181036060830152613c828185612b88565b90508181036080830152613c968184613c01565b90509695505050505050565b600081519050613cb18161255a565b92915050565b600060208284031215613ccd57613ccc612426565b5b6000613cdb84828501613ca2565b91505092915050565b60008160e01c9050919050565b600060033d1115613d105760046000803e613d0d600051613ce4565b90505b90565b600060443d10613da057613d2561241c565b60043d036004823e80513d602482011167ffffffffffffffff82111715613d4d575050613da0565b808201805167ffffffffffffffff811115613d6b5750505050613da0565b80602083010160043d038501811115613d88575050505050613da0565b613d9782602001850186612755565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000613dff60348361264d565b9150613e0a82613da3565b604082019050919050565b60006020820190508181036000830152613e2e81613df2565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613e9160288361264d565b9150613e9c82613e35565b604082019050919050565b60006020820190508181036000830152613ec081613e84565b9050919050565b600060a082019050613edc6000830188612cf2565b613ee96020830187612cf2565b613ef66040830186612504565b613f036060830185612504565b8181036080830152613f158184613c01565b9050969550505050505056fea26469706673582212209e36798381e7777405bf57ec64f14ec7e027d758cc93052ea3bdb26b169a89fd64736f6c63430008110033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005568747470733a2f2f697066732e696f2f697066732f516d566a5739647a7a6b506a6a554c324d585653764a35573646636a507a665369365333554b6b714e79525248632f636f6e74726163742d7572692e6a736f6e0000000000000000000000

-----Decoded View---------------
Arg [0] : _contractURI (string): https://ipfs.io/ipfs/QmVjW9dzzkPjjUL2MXVSvJ5W6FcjPzfSi6S3UKkqNyRRHc/contract-uri.json

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000055
Arg [2] : 68747470733a2f2f697066732e696f2f697066732f516d566a5739647a7a6b50
Arg [3] : 6a6a554c324d585653764a35573646636a507a665369365333554b6b714e7952
Arg [4] : 5248632f636f6e74726163742d7572692e6a736f6e0000000000000000000000


Deployed Bytecode Sourcemap

43212:3803:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27586:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26609:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46389:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45968:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27330:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46733:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43869:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29529:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46476:155;;;:::i;:::-;;46639:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27982:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46277:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46834:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:103;;;;;;;;;;;;;:::i;:::-;;14643:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45843:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46067:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28579:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44271:937;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46933:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43646:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45216:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43746:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45634:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28806:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29046:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15549:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45741:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27586:230;27672:7;27719:1;27700:21;;:7;:21;;;27692:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27786:9;:13;27796:2;27786:13;;;;;;;;;;;:22;27800:7;27786:22;;;;;;;;;;;;;;;;27779:29;;27586:230;;;;:::o;26609:310::-;26711:4;26763:26;26748:41;;;:11;:41;;;;:110;;;;26821:37;26806:52;;;:11;:52;;;;26748:110;:163;;;;26875:36;26899:11;26875:23;:36::i;:::-;26748:163;26728:183;;26609:310;;;:::o;46389:79::-;14529:13;:11;:13::i;:::-;46454:6:::1;46445;;:15;;;;;;;;;;;;;;;;;;46389:79:::0;:::o;45968:91::-;46013:13;46046:5;46039:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45968:91;:::o;27330:105::-;27390:13;27423:4;27416:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27330:105;;;:::o;46733:93::-;46776:4;46800:10;:18;;;46793:25;;46733:93;:::o;43869:30::-;;;;:::o;29529:438::-;29770:12;:10;:12::i;:::-;29762:20;;:4;:20;;;:60;;;;29786:36;29803:4;29809:12;:10;:12::i;:::-;29786:16;:36::i;:::-;29762:60;29740:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;29907:52;29930:4;29936:2;29940:3;29945:7;29954:4;29907:22;:52::i;:::-;29529:438;;;;;:::o;46476:155::-;14529:13;:11;:13::i;:::-;46533:7:::1;46554;:5;:7::i;:::-;46546:21;;46575;46546:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46532:69;;;46620:2;46612:11;;;::::0;::::1;;46521:110;46476:155::o:0;46639:86::-;46684:4;46708:9;;46701:16;;46639:86;:::o;27982:524::-;28138:16;28199:3;:10;28180:8;:15;:29;28172:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;28268:30;28315:8;:15;28301:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28268:63;;28349:9;28344:122;28368:8;:15;28364:1;:19;28344:122;;;28424:30;28434:8;28443:1;28434:11;;;;;;;;:::i;:::-;;;;;;;;28447:3;28451:1;28447:6;;;;;;;;:::i;:::-;;;;;;;;28424:9;:30::i;:::-;28405:13;28419:1;28405:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;28385:3;;;;:::i;:::-;;;28344:122;;;;28485:13;28478:20;;;27982:524;;;;:::o;46277:104::-;14529:13;:11;:13::i;:::-;46362:11:::1;46352:7;:21;;;;;;:::i;:::-;;46277:104:::0;:::o;46834:91::-;46877:13;46910:7;46903:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46834:91;:::o;15291:103::-;14529:13;:11;:13::i;:::-;15356:30:::1;15383:1;15356:18;:30::i;:::-;15291:103::o:0;14643:87::-;14689:7;14716:6;;;;;;;;;;;14709:13;;14643:87;:::o;45843:117::-;14529:13;:11;:13::i;:::-;45940:12:::1;45925;:27;;;;;;:::i;:::-;;45843:117:::0;:::o;46067:95::-;46114:13;46147:7;46140:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46067:95;:::o;28579:155::-;28674:52;28693:12;:10;:12::i;:::-;28707:8;28717;28674:18;:52::i;:::-;28579:155;;:::o;44271:937::-;14529:13;:11;:13::i;:::-;44420:6:::1;;;;;;;;;;;44419:7;44411:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;44460:14;44477:17;:15;:17::i;:::-;44460:34;;44527:1;44513:11;:15;44505:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;44607:9;;44592:11;44583:6;:20;;;;:::i;:::-;:33;;44575:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;44694:11;:20;44706:7;44694:20;;;;;;;;;;;;44673:17;;:41;;44665:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;44778:15;;;;;;;;;;;44775:156;;;44819:16;:25;44836:7;44819:25;;;;;;;;;;;;;;;;;;;;;;;;;44818:26;44810:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;44915:4;44887:16;:25;44904:7;44887:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;44775:156;44943:33;44991:17;:15;:17::i;:::-;44979:9;;:29;;;;:::i;:::-;44943:65;;45029:34;45035:7;45044:1;45047:11;45029:34;;;;;;;;;;;::::0;:5:::1;:34::i;:::-;45132:11;45104:25;:39;;;;:::i;:::-;45076:67;;45154:11;;:13;;;;;;;;;:::i;:::-;;;;;;45178:11;:20;45190:7;45178:20;;;;;;;;;;;;:22;;;;;;;;;:::i;:::-;;;;;;44400:808;;44271:937:::0;;;:::o;46933:79::-;46974:4;46998:6;;;;;;;;;;;46991:13;;46933:79;:::o;43646:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;45216:410::-;14529:13;:11;:13::i;:::-;45349:6:::1;;;;;;;;;;;45348:7;45340:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;45415:6;:13;45397:7;:14;:31;45389:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;45487:7;:14;45473:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45462:8;:40;;;;;;;;;;;;:::i;:::-;;45520:6;45515:104;45536:7;:14;45532:1;:18;45515:104;;;45572:35;45578:7;45586:1;45578:10;;;;;;;;:::i;:::-;;;;;;;;45590:1;45593:6;45600:1;45593:9;;;;;;;;:::i;:::-;;;;;;;;45572:35;;;;;;;;;;;::::0;:5:::1;:35::i;:::-;45552:3;;;;;:::i;:::-;;;;45515:104;;;;45216:410:::0;;:::o;43746:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;45634:99::-;45680:13;45713:12;45706:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45634:99;:::o;28806:168::-;28905:4;28929:18;:27;28948:7;28929:27;;;;;;;;;;;;;;;:37;28957:8;28929:37;;;;;;;;;;;;;;;;;;;;;;;;;28922:44;;28806:168;;;;:::o;29046:406::-;29262:12;:10;:12::i;:::-;29254:20;;:4;:20;;;:60;;;;29278:36;29295:4;29301:12;:10;:12::i;:::-;29278:16;:36::i;:::-;29254:60;29232:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;29399:45;29417:4;29423:2;29427;29431:6;29439:4;29399:17;:45::i;:::-;29046:406;;;;;:::o;15549:201::-;14529:13;:11;:13::i;:::-;15658:1:::1;15638:22;;:8;:22;;::::0;15630:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15714:28;15733:8;15714:18;:28::i;:::-;15549:201:::0;:::o;45741:94::-;45789:7;45816:11;;45809:18;;45741:94;:::o;17890:157::-;17975:4;18014:25;17999:40;;;:11;:40;;;;17992:47;;17890:157;;;:::o;14808:132::-;14883:12;:10;:12::i;:::-;14872:23;;:7;:5;:7::i;:::-;:23;;;14864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14808:132::o;13194:98::-;13247:7;13274:10;13267:17;;13194:98;:::o;31763:1146::-;31990:7;:14;31976:3;:10;:28;31968:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;32082:1;32068:16;;:2;:16;;;32060:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;32139:16;32158:12;:10;:12::i;:::-;32139:31;;32183:60;32204:8;32214:4;32220:2;32224:3;32229:7;32238:4;32183:20;:60::i;:::-;32261:9;32256:421;32280:3;:10;32276:1;:14;32256:421;;;32312:10;32325:3;32329:1;32325:6;;;;;;;;:::i;:::-;;;;;;;;32312:19;;32346:14;32363:7;32371:1;32363:10;;;;;;;;:::i;:::-;;;;;;;;32346:27;;32390:19;32412:9;:13;32422:2;32412:13;;;;;;;;;;;:19;32426:4;32412:19;;;;;;;;;;;;;;;;32390:41;;32469:6;32454:11;:21;;32446:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;32602:6;32588:11;:20;32566:9;:13;32576:2;32566:13;;;;;;;;;;;:19;32580:4;32566:19;;;;;;;;;;;;;;;:42;;;;32659:6;32638:9;:13;32648:2;32638:13;;;;;;;;;;;:17;32652:2;32638:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;32297:380;;;32292:3;;;;:::i;:::-;;;32256:421;;;;32724:2;32694:47;;32718:4;32694:47;;32708:8;32694:47;;;32728:3;32733:7;32694:47;;;;;;;:::i;:::-;;;;;;;;32754:59;32774:8;32784:4;32790:2;32794:3;32799:7;32808:4;32754:19;:59::i;:::-;32826:75;32862:8;32872:4;32878:2;32882:3;32887:7;32896:4;32826:35;:75::i;:::-;31957:952;31763:1146;;;;;:::o;15910:191::-;15984:16;16003:6;;;;;;;;;;;15984:25;;16029:8;16020:6;;:17;;;;;;;;;;;;;;;;;;16084:8;16053:40;;16074:8;16053:40;;;;;;;;;;;;15973:128;15910:191;:::o;38640:331::-;38795:8;38786:17;;:5;:17;;;38778:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;38898:8;38860:18;:25;38879:5;38860:25;;;;;;;;;;;;;;;:35;38886:8;38860:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38944:8;38922:41;;38937:5;38922:41;;;38954:8;38922:41;;;;;;:::i;:::-;;;;;;;;38640:331;;;:::o;34227:729::-;34394:1;34380:16;;:2;:16;;;34372:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;34447:16;34466:12;:10;:12::i;:::-;34447:31;;34489:20;34512:21;34530:2;34512:17;:21::i;:::-;34489:44;;34544:24;34571:25;34589:6;34571:17;:25::i;:::-;34544:52;;34609:66;34630:8;34648:1;34652:2;34656:3;34661:7;34670:4;34609:20;:66::i;:::-;34709:6;34688:9;:13;34698:2;34688:13;;;;;;;;;;;:17;34702:2;34688:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;34768:2;34731:52;;34764:1;34731:52;;34746:8;34731:52;;;34772:2;34776:6;34731:52;;;;;;;:::i;:::-;;;;;;;;34796:65;34816:8;34834:1;34838:2;34842:3;34847:7;34856:4;34796:19;:65::i;:::-;34874:74;34905:8;34923:1;34927:2;34931;34935:6;34943:4;34874:30;:74::i;:::-;34361:595;;;34227:729;;;;:::o;30431:974::-;30633:1;30619:16;;:2;:16;;;30611:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30690:16;30709:12;:10;:12::i;:::-;30690:31;;30732:20;30755:21;30773:2;30755:17;:21::i;:::-;30732:44;;30787:24;30814:25;30832:6;30814:17;:25::i;:::-;30787:52;;30852:60;30873:8;30883:4;30889:2;30893:3;30898:7;30907:4;30852:20;:60::i;:::-;30925:19;30947:9;:13;30957:2;30947:13;;;;;;;;;;;:19;30961:4;30947:19;;;;;;;;;;;;;;;;30925:41;;31000:6;30985:11;:21;;30977:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31125:6;31111:11;:20;31089:9;:13;31099:2;31089:13;;;;;;;;;;;:19;31103:4;31089:19;;;;;;;;;;;;;;;:42;;;;31174:6;31153:9;:13;31163:2;31153:13;;;;;;;;;;;:17;31167:2;31153:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;31229:2;31198:46;;31223:4;31198:46;;31213:8;31198:46;;;31233:2;31237:6;31198:46;;;;;;;:::i;:::-;;;;;;;;31257:59;31277:8;31287:4;31293:2;31297:3;31302:7;31311:4;31257:19;:59::i;:::-;31329:68;31360:8;31370:4;31376:2;31380;31384:6;31392:4;31329:30;:68::i;:::-;30600:805;;;;30431:974;;;;;:::o;39929:221::-;;;;;;;:::o;41105:220::-;;;;;;;:::o;42085:813::-;42325:15;:2;:13;;;:15::i;:::-;42321:570;;;42378:2;42361:43;;;42405:8;42415:4;42421:3;42426:7;42435:4;42361:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;42357:523;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;42753:6;42746:14;;;;;;;;;;;:::i;:::-;;;;;;;;42357:523;;;42802:62;;;;;;;;;;:::i;:::-;;;;;;;;42357:523;42534:48;;;42522:60;;;:8;:60;;;;42518:159;;42607:50;;;;;;;;;;:::i;:::-;;;;;;;;42518:159;42441:251;42321:570;42085:813;;;;;;:::o;42906:198::-;42972:16;43001:22;43040:1;43026:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43001:41;;43064:7;43053:5;43059:1;43053:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;43091:5;43084:12;;;42906:198;;;:::o;41333:744::-;41548:15;:2;:13;;;:15::i;:::-;41544:526;;;41601:2;41584:38;;;41623:8;41633:4;41639:2;41643:6;41651:4;41584:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41580:479;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;41932:6;41925:14;;;;;;;;;;;:::i;:::-;;;;;;;;41580:479;;;41981:62;;;;;;;;;;:::i;:::-;;;;;;;;41580:479;41718:43;;;41706:55;;;:8;:55;;;;41702:154;;41786:50;;;;;;;;;;:::i;:::-;;;;;;;;41702:154;41657:214;41544:526;41333:744;;;;;;:::o;1233:326::-;1293:4;1550:1;1528:7;:19;;;:23;1521:30;;1233:326;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:149::-;2065:7;2105:66;2098:5;2094:78;2083:89;;2029:149;;;:::o;2184:120::-;2256:23;2273:5;2256:23;:::i;:::-;2249:5;2246:34;2236:62;;2294:1;2291;2284:12;2236:62;2184:120;:::o;2310:137::-;2355:5;2393:6;2380:20;2371:29;;2409:32;2435:5;2409:32;:::i;:::-;2310:137;;;;:::o;2453:327::-;2511:6;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:52;2755:7;2746:6;2735:9;2731:22;2711:52;:::i;:::-;2701:62;;2657:116;2453:327;;;;:::o;2786:90::-;2820:7;2863:5;2856:13;2849:21;2838:32;;2786:90;;;:::o;2882:109::-;2963:21;2978:5;2963:21;:::i;:::-;2958:3;2951:34;2882:109;;:::o;2997:210::-;3084:4;3122:2;3111:9;3107:18;3099:26;;3135:65;3197:1;3186:9;3182:17;3173:6;3135:65;:::i;:::-;2997:210;;;;:::o;3213:116::-;3283:21;3298:5;3283:21;:::i;:::-;3276:5;3273:32;3263:60;;3319:1;3316;3309:12;3263:60;3213:116;:::o;3335:133::-;3378:5;3416:6;3403:20;3394:29;;3432:30;3456:5;3432:30;:::i;:::-;3335:133;;;;:::o;3474:323::-;3530:6;3579:2;3567:9;3558:7;3554:23;3550:32;3547:119;;;3585:79;;:::i;:::-;3547:119;3705:1;3730:50;3772:7;3763:6;3752:9;3748:22;3730:50;:::i;:::-;3720:60;;3676:114;3474:323;;;;:::o;3803:99::-;3855:6;3889:5;3883:12;3873:22;;3803:99;;;:::o;3908:169::-;3992:11;4026:6;4021:3;4014:19;4066:4;4061:3;4057:14;4042:29;;3908:169;;;;:::o;4083:246::-;4164:1;4174:113;4188:6;4185:1;4182:13;4174:113;;;4273:1;4268:3;4264:11;4258:18;4254:1;4249:3;4245:11;4238:39;4210:2;4207:1;4203:10;4198:15;;4174:113;;;4321:1;4312:6;4307:3;4303:16;4296:27;4145:184;4083:246;;;:::o;4335:102::-;4376:6;4427:2;4423:7;4418:2;4411:5;4407:14;4403:28;4393:38;;4335:102;;;:::o;4443:377::-;4531:3;4559:39;4592:5;4559:39;:::i;:::-;4614:71;4678:6;4673:3;4614:71;:::i;:::-;4607:78;;4694:65;4752:6;4747:3;4740:4;4733:5;4729:16;4694:65;:::i;:::-;4784:29;4806:6;4784:29;:::i;:::-;4779:3;4775:39;4768:46;;4535:285;4443:377;;;;:::o;4826:313::-;4939:4;4977:2;4966:9;4962:18;4954:26;;5026:9;5020:4;5016:20;5012:1;5001:9;4997:17;4990:47;5054:78;5127:4;5118:6;5054:78;:::i;:::-;5046:86;;4826:313;;;;:::o;5145:329::-;5204:6;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5145:329;;;;:::o;5480:117::-;5589:1;5586;5579:12;5603:180;5651:77;5648:1;5641:88;5748:4;5745:1;5738:15;5772:4;5769:1;5762:15;5789:281;5872:27;5894:4;5872:27;:::i;:::-;5864:6;5860:40;6002:6;5990:10;5987:22;5966:18;5954:10;5951:34;5948:62;5945:88;;;6013:18;;:::i;:::-;5945:88;6053:10;6049:2;6042:22;5832:238;5789:281;;:::o;6076:129::-;6110:6;6137:20;;:::i;:::-;6127:30;;6166:33;6194:4;6186:6;6166:33;:::i;:::-;6076:129;;;:::o;6211:311::-;6288:4;6378:18;6370:6;6367:30;6364:56;;;6400:18;;:::i;:::-;6364:56;6450:4;6442:6;6438:17;6430:25;;6510:4;6504;6500:15;6492:23;;6211:311;;;:::o;6528:117::-;6637:1;6634;6627:12;6668:710;6764:5;6789:81;6805:64;6862:6;6805:64;:::i;:::-;6789:81;:::i;:::-;6780:90;;6890:5;6919:6;6912:5;6905:21;6953:4;6946:5;6942:16;6935:23;;7006:4;6998:6;6994:17;6986:6;6982:30;7035:3;7027:6;7024:15;7021:122;;;7054:79;;:::i;:::-;7021:122;7169:6;7152:220;7186:6;7181:3;7178:15;7152:220;;;7261:3;7290:37;7323:3;7311:10;7290:37;:::i;:::-;7285:3;7278:50;7357:4;7352:3;7348:14;7341:21;;7228:144;7212:4;7207:3;7203:14;7196:21;;7152:220;;;7156:21;6770:608;;6668:710;;;;;:::o;7401:370::-;7472:5;7521:3;7514:4;7506:6;7502:17;7498:27;7488:122;;7529:79;;:::i;:::-;7488:122;7646:6;7633:20;7671:94;7761:3;7753:6;7746:4;7738:6;7734:17;7671:94;:::i;:::-;7662:103;;7478:293;7401:370;;;;:::o;7777:117::-;7886:1;7883;7876:12;7900:307;7961:4;8051:18;8043:6;8040:30;8037:56;;;8073:18;;:::i;:::-;8037:56;8111:29;8133:6;8111:29;:::i;:::-;8103:37;;8195:4;8189;8185:15;8177:23;;7900:307;;;:::o;8213:146::-;8310:6;8305:3;8300;8287:30;8351:1;8342:6;8337:3;8333:16;8326:27;8213:146;;;:::o;8365:423::-;8442:5;8467:65;8483:48;8524:6;8483:48;:::i;:::-;8467:65;:::i;:::-;8458:74;;8555:6;8548:5;8541:21;8593:4;8586:5;8582:16;8631:3;8622:6;8617:3;8613:16;8610:25;8607:112;;;8638:79;;:::i;:::-;8607:112;8728:54;8775:6;8770:3;8765;8728:54;:::i;:::-;8448:340;8365:423;;;;;:::o;8807:338::-;8862:5;8911:3;8904:4;8896:6;8892:17;8888:27;8878:122;;8919:79;;:::i;:::-;8878:122;9036:6;9023:20;9061:78;9135:3;9127:6;9120:4;9112:6;9108:17;9061:78;:::i;:::-;9052:87;;8868:277;8807:338;;;;:::o;9151:1509::-;9305:6;9313;9321;9329;9337;9386:3;9374:9;9365:7;9361:23;9357:33;9354:120;;;9393:79;;:::i;:::-;9354:120;9513:1;9538:53;9583:7;9574:6;9563:9;9559:22;9538:53;:::i;:::-;9528:63;;9484:117;9640:2;9666:53;9711:7;9702:6;9691:9;9687:22;9666:53;:::i;:::-;9656:63;;9611:118;9796:2;9785:9;9781:18;9768:32;9827:18;9819:6;9816:30;9813:117;;;9849:79;;:::i;:::-;9813:117;9954:78;10024:7;10015:6;10004:9;10000:22;9954:78;:::i;:::-;9944:88;;9739:303;10109:2;10098:9;10094:18;10081:32;10140:18;10132:6;10129:30;10126:117;;;10162:79;;:::i;:::-;10126:117;10267:78;10337:7;10328:6;10317:9;10313:22;10267:78;:::i;:::-;10257:88;;10052:303;10422:3;10411:9;10407:19;10394:33;10454:18;10446:6;10443:30;10440:117;;;10476:79;;:::i;:::-;10440:117;10581:62;10635:7;10626:6;10615:9;10611:22;10581:62;:::i;:::-;10571:72;;10365:288;9151:1509;;;;;;;;:::o;10666:311::-;10743:4;10833:18;10825:6;10822:30;10819:56;;;10855:18;;:::i;:::-;10819:56;10905:4;10897:6;10893:17;10885:25;;10965:4;10959;10955:15;10947:23;;10666:311;;;:::o;11000:710::-;11096:5;11121:81;11137:64;11194:6;11137:64;:::i;:::-;11121:81;:::i;:::-;11112:90;;11222:5;11251:6;11244:5;11237:21;11285:4;11278:5;11274:16;11267:23;;11338:4;11330:6;11326:17;11318:6;11314:30;11367:3;11359:6;11356:15;11353:122;;;11386:79;;:::i;:::-;11353:122;11501:6;11484:220;11518:6;11513:3;11510:15;11484:220;;;11593:3;11622:37;11655:3;11643:10;11622:37;:::i;:::-;11617:3;11610:50;11689:4;11684:3;11680:14;11673:21;;11560:144;11544:4;11539:3;11535:14;11528:21;;11484:220;;;11488:21;11102:608;;11000:710;;;;;:::o;11733:370::-;11804:5;11853:3;11846:4;11838:6;11834:17;11830:27;11820:122;;11861:79;;:::i;:::-;11820:122;11978:6;11965:20;12003:94;12093:3;12085:6;12078:4;12070:6;12066:17;12003:94;:::i;:::-;11994:103;;11810:293;11733:370;;;;:::o;12109:894::-;12227:6;12235;12284:2;12272:9;12263:7;12259:23;12255:32;12252:119;;;12290:79;;:::i;:::-;12252:119;12438:1;12427:9;12423:17;12410:31;12468:18;12460:6;12457:30;12454:117;;;12490:79;;:::i;:::-;12454:117;12595:78;12665:7;12656:6;12645:9;12641:22;12595:78;:::i;:::-;12585:88;;12381:302;12750:2;12739:9;12735:18;12722:32;12781:18;12773:6;12770:30;12767:117;;;12803:79;;:::i;:::-;12767:117;12908:78;12978:7;12969:6;12958:9;12954:22;12908:78;:::i;:::-;12898:88;;12693:303;12109:894;;;;;:::o;13009:114::-;13076:6;13110:5;13104:12;13094:22;;13009:114;;;:::o;13129:184::-;13228:11;13262:6;13257:3;13250:19;13302:4;13297:3;13293:14;13278:29;;13129:184;;;;:::o;13319:132::-;13386:4;13409:3;13401:11;;13439:4;13434:3;13430:14;13422:22;;13319:132;;;:::o;13457:108::-;13534:24;13552:5;13534:24;:::i;:::-;13529:3;13522:37;13457:108;;:::o;13571:179::-;13640:10;13661:46;13703:3;13695:6;13661:46;:::i;:::-;13739:4;13734:3;13730:14;13716:28;;13571:179;;;;:::o;13756:113::-;13826:4;13858;13853:3;13849:14;13841:22;;13756:113;;;:::o;13905:732::-;14024:3;14053:54;14101:5;14053:54;:::i;:::-;14123:86;14202:6;14197:3;14123:86;:::i;:::-;14116:93;;14233:56;14283:5;14233:56;:::i;:::-;14312:7;14343:1;14328:284;14353:6;14350:1;14347:13;14328:284;;;14429:6;14423:13;14456:63;14515:3;14500:13;14456:63;:::i;:::-;14449:70;;14542:60;14595:6;14542:60;:::i;:::-;14532:70;;14388:224;14375:1;14372;14368:9;14363:14;;14328:284;;;14332:14;14628:3;14621:10;;14029:608;;;13905:732;;;;:::o;14643:373::-;14786:4;14824:2;14813:9;14809:18;14801:26;;14873:9;14867:4;14863:20;14859:1;14848:9;14844:17;14837:47;14901:108;15004:4;14995:6;14901:108;:::i;:::-;14893:116;;14643:373;;;;:::o;15022:308::-;15084:4;15174:18;15166:6;15163:30;15160:56;;;15196:18;;:::i;:::-;15160:56;15234:29;15256:6;15234:29;:::i;:::-;15226:37;;15318:4;15312;15308:15;15300:23;;15022:308;;;:::o;15336:425::-;15414:5;15439:66;15455:49;15497:6;15455:49;:::i;:::-;15439:66;:::i;:::-;15430:75;;15528:6;15521:5;15514:21;15566:4;15559:5;15555:16;15604:3;15595:6;15590:3;15586:16;15583:25;15580:112;;;15611:79;;:::i;:::-;15580:112;15701:54;15748:6;15743:3;15738;15701:54;:::i;:::-;15420:341;15336:425;;;;;:::o;15781:340::-;15837:5;15886:3;15879:4;15871:6;15867:17;15863:27;15853:122;;15894:79;;:::i;:::-;15853:122;16011:6;15998:20;16036:79;16111:3;16103:6;16096:4;16088:6;16084:17;16036:79;:::i;:::-;16027:88;;15843:278;15781:340;;;;:::o;16127:509::-;16196:6;16245:2;16233:9;16224:7;16220:23;16216:32;16213:119;;;16251:79;;:::i;:::-;16213:119;16399:1;16388:9;16384:17;16371:31;16429:18;16421:6;16418:30;16415:117;;;16451:79;;:::i;:::-;16415:117;16556:63;16611:7;16602:6;16591:9;16587:22;16556:63;:::i;:::-;16546:73;;16342:287;16127:509;;;;:::o;16642:118::-;16729:24;16747:5;16729:24;:::i;:::-;16724:3;16717:37;16642:118;;:::o;16766:222::-;16859:4;16897:2;16886:9;16882:18;16874:26;;16910:71;16978:1;16967:9;16963:17;16954:6;16910:71;:::i;:::-;16766:222;;;;:::o;16994:468::-;17059:6;17067;17116:2;17104:9;17095:7;17091:23;17087:32;17084:119;;;17122:79;;:::i;:::-;17084:119;17242:1;17267:53;17312:7;17303:6;17292:9;17288:22;17267:53;:::i;:::-;17257:63;;17213:117;17369:2;17395:50;17437:7;17428:6;17417:9;17413:22;17395:50;:::i;:::-;17385:60;;17340:115;16994:468;;;;;:::o;17468:104::-;17513:7;17542:24;17560:5;17542:24;:::i;:::-;17531:35;;17468:104;;;:::o;17578:138::-;17659:32;17685:5;17659:32;:::i;:::-;17652:5;17649:43;17639:71;;17706:1;17703;17696:12;17639:71;17578:138;:::o;17722:155::-;17776:5;17814:6;17801:20;17792:29;;17830:41;17865:5;17830:41;:::i;:::-;17722:155;;;;:::o;17883:635::-;17968:6;17976;17984;18033:2;18021:9;18012:7;18008:23;18004:32;18001:119;;;18039:79;;:::i;:::-;18001:119;18159:1;18184:53;18229:7;18220:6;18209:9;18205:22;18184:53;:::i;:::-;18174:63;;18130:117;18286:2;18312:53;18357:7;18348:6;18337:9;18333:22;18312:53;:::i;:::-;18302:63;;18257:118;18414:2;18440:61;18493:7;18484:6;18473:9;18469:22;18440:61;:::i;:::-;18430:71;;18385:126;17883:635;;;;;:::o;18524:329::-;18583:6;18632:2;18620:9;18611:7;18607:23;18603:32;18600:119;;;18638:79;;:::i;:::-;18600:119;18758:1;18783:53;18828:7;18819:6;18808:9;18804:22;18783:53;:::i;:::-;18773:63;;18729:117;18524:329;;;;:::o;18859:474::-;18927:6;18935;18984:2;18972:9;18963:7;18959:23;18955:32;18952:119;;;18990:79;;:::i;:::-;18952:119;19110:1;19135:53;19180:7;19171:6;19160:9;19156:22;19135:53;:::i;:::-;19125:63;;19081:117;19237:2;19263:53;19308:7;19299:6;19288:9;19284:22;19263:53;:::i;:::-;19253:63;;19208:118;18859:474;;;;;:::o;19339:1089::-;19443:6;19451;19459;19467;19475;19524:3;19512:9;19503:7;19499:23;19495:33;19492:120;;;19531:79;;:::i;:::-;19492:120;19651:1;19676:53;19721:7;19712:6;19701:9;19697:22;19676:53;:::i;:::-;19666:63;;19622:117;19778:2;19804:53;19849:7;19840:6;19829:9;19825:22;19804:53;:::i;:::-;19794:63;;19749:118;19906:2;19932:53;19977:7;19968:6;19957:9;19953:22;19932:53;:::i;:::-;19922:63;;19877:118;20034:2;20060:53;20105:7;20096:6;20085:9;20081:22;20060:53;:::i;:::-;20050:63;;20005:118;20190:3;20179:9;20175:19;20162:33;20222:18;20214:6;20211:30;20208:117;;;20244:79;;:::i;:::-;20208:117;20349:62;20403:7;20394:6;20383:9;20379:22;20349:62;:::i;:::-;20339:72;;20133:288;19339:1089;;;;;;;;:::o;20434:229::-;20574:34;20570:1;20562:6;20558:14;20551:58;20643:12;20638:2;20630:6;20626:15;20619:37;20434:229;:::o;20669:366::-;20811:3;20832:67;20896:2;20891:3;20832:67;:::i;:::-;20825:74;;20908:93;20997:3;20908:93;:::i;:::-;21026:2;21021:3;21017:12;21010:19;;20669:366;;;:::o;21041:419::-;21207:4;21245:2;21234:9;21230:18;21222:26;;21294:9;21288:4;21284:20;21280:1;21269:9;21265:17;21258:47;21322:131;21448:4;21322:131;:::i;:::-;21314:139;;21041:419;;;:::o;21466:180::-;21514:77;21511:1;21504:88;21611:4;21608:1;21601:15;21635:4;21632:1;21625:15;21652:320;21696:6;21733:1;21727:4;21723:12;21713:22;;21780:1;21774:4;21770:12;21801:18;21791:81;;21857:4;21849:6;21845:17;21835:27;;21791:81;21919:2;21911:6;21908:14;21888:18;21885:38;21882:84;;21938:18;;:::i;:::-;21882:84;21703:269;21652:320;;;:::o;21978:233::-;22118:34;22114:1;22106:6;22102:14;22095:58;22187:16;22182:2;22174:6;22170:15;22163:41;21978:233;:::o;22217:366::-;22359:3;22380:67;22444:2;22439:3;22380:67;:::i;:::-;22373:74;;22456:93;22545:3;22456:93;:::i;:::-;22574:2;22569:3;22565:12;22558:19;;22217:366;;;:::o;22589:419::-;22755:4;22793:2;22782:9;22778:18;22770:26;;22842:9;22836:4;22832:20;22828:1;22817:9;22813:17;22806:47;22870:131;22996:4;22870:131;:::i;:::-;22862:139;;22589:419;;;:::o;23014:147::-;23115:11;23152:3;23137:18;;23014:147;;;;:::o;23167:114::-;;:::o;23287:398::-;23446:3;23467:83;23548:1;23543:3;23467:83;:::i;:::-;23460:90;;23559:93;23648:3;23559:93;:::i;:::-;23677:1;23672:3;23668:11;23661:18;;23287:398;;;:::o;23691:379::-;23875:3;23897:147;24040:3;23897:147;:::i;:::-;23890:154;;24061:3;24054:10;;23691:379;;;:::o;24076:228::-;24216:34;24212:1;24204:6;24200:14;24193:58;24285:11;24280:2;24272:6;24268:15;24261:36;24076:228;:::o;24310:366::-;24452:3;24473:67;24537:2;24532:3;24473:67;:::i;:::-;24466:74;;24549:93;24638:3;24549:93;:::i;:::-;24667:2;24662:3;24658:12;24651:19;;24310:366;;;:::o;24682:419::-;24848:4;24886:2;24875:9;24871:18;24863:26;;24935:9;24929:4;24925:20;24921:1;24910:9;24906:17;24899:47;24963:131;25089:4;24963:131;:::i;:::-;24955:139;;24682:419;;;:::o;25107:180::-;25155:77;25152:1;25145:88;25252:4;25249:1;25242:15;25276:4;25273:1;25266:15;25293:180;25341:77;25338:1;25331:88;25438:4;25435:1;25428:15;25462:4;25459:1;25452:15;25479:233;25518:3;25541:24;25559:5;25541:24;:::i;:::-;25532:33;;25587:66;25580:5;25577:77;25574:103;;25657:18;;:::i;:::-;25574:103;25704:1;25697:5;25693:13;25686:20;;25479:233;;;:::o;25718:141::-;25767:4;25790:3;25782:11;;25813:3;25810:1;25803:14;25847:4;25844:1;25834:18;25826:26;;25718:141;;;:::o;25865:93::-;25902:6;25949:2;25944;25937:5;25933:14;25929:23;25919:33;;25865:93;;;:::o;25964:107::-;26008:8;26058:5;26052:4;26048:16;26027:37;;25964:107;;;;:::o;26077:393::-;26146:6;26196:1;26184:10;26180:18;26219:97;26249:66;26238:9;26219:97;:::i;:::-;26337:39;26367:8;26356:9;26337:39;:::i;:::-;26325:51;;26409:4;26405:9;26398:5;26394:21;26385:30;;26458:4;26448:8;26444:19;26437:5;26434:30;26424:40;;26153:317;;26077:393;;;;;:::o;26476:60::-;26504:3;26525:5;26518:12;;26476:60;;;:::o;26542:142::-;26592:9;26625:53;26643:34;26652:24;26670:5;26652:24;:::i;:::-;26643:34;:::i;:::-;26625:53;:::i;:::-;26612:66;;26542:142;;;:::o;26690:75::-;26733:3;26754:5;26747:12;;26690:75;;;:::o;26771:269::-;26881:39;26912:7;26881:39;:::i;:::-;26942:91;26991:41;27015:16;26991:41;:::i;:::-;26983:6;26976:4;26970:11;26942:91;:::i;:::-;26936:4;26929:105;26847:193;26771:269;;;:::o;27046:73::-;27091:3;27046:73;:::o;27125:189::-;27202:32;;:::i;:::-;27243:65;27301:6;27293;27287:4;27243:65;:::i;:::-;27178:136;27125:189;;:::o;27320:186::-;27380:120;27397:3;27390:5;27387:14;27380:120;;;27451:39;27488:1;27481:5;27451:39;:::i;:::-;27424:1;27417:5;27413:13;27404:22;;27380:120;;;27320:186;;:::o;27512:543::-;27613:2;27608:3;27605:11;27602:446;;;27647:38;27679:5;27647:38;:::i;:::-;27731:29;27749:10;27731:29;:::i;:::-;27721:8;27717:44;27914:2;27902:10;27899:18;27896:49;;;27935:8;27920:23;;27896:49;27958:80;28014:22;28032:3;28014:22;:::i;:::-;28004:8;28000:37;27987:11;27958:80;:::i;:::-;27617:431;;27602:446;27512:543;;;:::o;28061:117::-;28115:8;28165:5;28159:4;28155:16;28134:37;;28061:117;;;;:::o;28184:169::-;28228:6;28261:51;28309:1;28305:6;28297:5;28294:1;28290:13;28261:51;:::i;:::-;28257:56;28342:4;28336;28332:15;28322:25;;28235:118;28184:169;;;;:::o;28358:295::-;28434:4;28580:29;28605:3;28599:4;28580:29;:::i;:::-;28572:37;;28642:3;28639:1;28635:11;28629:4;28626:21;28618:29;;28358:295;;;;:::o;28658:1395::-;28775:37;28808:3;28775:37;:::i;:::-;28877:18;28869:6;28866:30;28863:56;;;28899:18;;:::i;:::-;28863:56;28943:38;28975:4;28969:11;28943:38;:::i;:::-;29028:67;29088:6;29080;29074:4;29028:67;:::i;:::-;29122:1;29146:4;29133:17;;29178:2;29170:6;29167:14;29195:1;29190:618;;;;29852:1;29869:6;29866:77;;;29918:9;29913:3;29909:19;29903:26;29894:35;;29866:77;29969:67;30029:6;30022:5;29969:67;:::i;:::-;29963:4;29956:81;29825:222;29160:887;;29190:618;29242:4;29238:9;29230:6;29226:22;29276:37;29308:4;29276:37;:::i;:::-;29335:1;29349:208;29363:7;29360:1;29357:14;29349:208;;;29442:9;29437:3;29433:19;29427:26;29419:6;29412:42;29493:1;29485:6;29481:14;29471:24;;29540:2;29529:9;29525:18;29512:31;;29386:4;29383:1;29379:12;29374:17;;29349:208;;;29585:6;29576:7;29573:19;29570:179;;;29643:9;29638:3;29634:19;29628:26;29686:48;29728:4;29720:6;29716:17;29705:9;29686:48;:::i;:::-;29678:6;29671:64;29593:156;29570:179;29795:1;29791;29783:6;29779:14;29775:22;29769:4;29762:36;29197:611;;;29160:887;;28750:1303;;;28658:1395;;:::o;30059:168::-;30199:20;30195:1;30187:6;30183:14;30176:44;30059:168;:::o;30233:366::-;30375:3;30396:67;30460:2;30455:3;30396:67;:::i;:::-;30389:74;;30472:93;30561:3;30472:93;:::i;:::-;30590:2;30585:3;30581:12;30574:19;;30233:366;;;:::o;30605:419::-;30771:4;30809:2;30798:9;30794:18;30786:26;;30858:9;30852:4;30848:20;30844:1;30833:9;30829:17;30822:47;30886:131;31012:4;30886:131;:::i;:::-;30878:139;;30605:419;;;:::o;31030:181::-;31170:33;31166:1;31158:6;31154:14;31147:57;31030:181;:::o;31217:366::-;31359:3;31380:67;31444:2;31439:3;31380:67;:::i;:::-;31373:74;;31456:93;31545:3;31456:93;:::i;:::-;31574:2;31569:3;31565:12;31558:19;;31217:366;;;:::o;31589:419::-;31755:4;31793:2;31782:9;31778:18;31770:26;;31842:9;31836:4;31832:20;31828:1;31817:9;31813:17;31806:47;31870:131;31996:4;31870:131;:::i;:::-;31862:139;;31589:419;;;:::o;32014:191::-;32054:3;32073:20;32091:1;32073:20;:::i;:::-;32068:25;;32107:20;32125:1;32107:20;:::i;:::-;32102:25;;32150:1;32147;32143:9;32136:16;;32171:3;32168:1;32165:10;32162:36;;;32178:18;;:::i;:::-;32162:36;32014:191;;;;:::o;32211:220::-;32351:34;32347:1;32339:6;32335:14;32328:58;32420:3;32415:2;32407:6;32403:15;32396:28;32211:220;:::o;32437:366::-;32579:3;32600:67;32664:2;32659:3;32600:67;:::i;:::-;32593:74;;32676:93;32765:3;32676:93;:::i;:::-;32794:2;32789:3;32785:12;32778:19;;32437:366;;;:::o;32809:419::-;32975:4;33013:2;33002:9;32998:18;32990:26;;33062:9;33056:4;33052:20;33048:1;33037:9;33033:17;33026:47;33090:131;33216:4;33090:131;:::i;:::-;33082:139;;32809:419;;;:::o;33234:230::-;33374:34;33370:1;33362:6;33358:14;33351:58;33443:13;33438:2;33430:6;33426:15;33419:38;33234:230;:::o;33470:366::-;33612:3;33633:67;33697:2;33692:3;33633:67;:::i;:::-;33626:74;;33709:93;33798:3;33709:93;:::i;:::-;33827:2;33822:3;33818:12;33811:19;;33470:366;;;:::o;33842:419::-;34008:4;34046:2;34035:9;34031:18;34023:26;;34095:9;34089:4;34085:20;34081:1;34070:9;34066:17;34059:47;34123:131;34249:4;34123:131;:::i;:::-;34115:139;;33842:419;;;:::o;34267:173::-;34407:25;34403:1;34395:6;34391:14;34384:49;34267:173;:::o;34446:366::-;34588:3;34609:67;34673:2;34668:3;34609:67;:::i;:::-;34602:74;;34685:93;34774:3;34685:93;:::i;:::-;34803:2;34798:3;34794:12;34787:19;;34446:366;;;:::o;34818:419::-;34984:4;35022:2;35011:9;35007:18;34999:26;;35071:9;35065:4;35061:20;35057:1;35046:9;35042:17;35035:47;35099:131;35225:4;35099:131;:::i;:::-;35091:139;;34818:419;;;:::o;35243:194::-;35283:4;35303:20;35321:1;35303:20;:::i;:::-;35298:25;;35337:20;35355:1;35337:20;:::i;:::-;35332:25;;35381:1;35378;35374:9;35366:17;;35405:1;35399:4;35396:11;35393:37;;;35410:18;;:::i;:::-;35393:37;35243:194;;;;:::o;35443:168::-;35583:20;35579:1;35571:6;35567:14;35560:44;35443:168;:::o;35617:366::-;35759:3;35780:67;35844:2;35839:3;35780:67;:::i;:::-;35773:74;;35856:93;35945:3;35856:93;:::i;:::-;35974:2;35969:3;35965:12;35958:19;;35617:366;;;:::o;35989:419::-;36155:4;36193:2;36182:9;36178:18;36170:26;;36242:9;36236:4;36232:20;36228:1;36217:9;36213:17;36206:47;36270:131;36396:4;36270:131;:::i;:::-;36262:139;;35989:419;;;:::o;36414:225::-;36554:34;36550:1;36542:6;36538:14;36531:58;36623:8;36618:2;36610:6;36606:15;36599:33;36414:225;:::o;36645:366::-;36787:3;36808:67;36872:2;36867:3;36808:67;:::i;:::-;36801:74;;36884:93;36973:3;36884:93;:::i;:::-;37002:2;36997:3;36993:12;36986:19;;36645:366;;;:::o;37017:419::-;37183:4;37221:2;37210:9;37206:18;37198:26;;37270:9;37264:4;37260:20;37256:1;37245:9;37241:17;37234:47;37298:131;37424:4;37298:131;:::i;:::-;37290:139;;37017:419;;;:::o;37442:182::-;37582:34;37578:1;37570:6;37566:14;37559:58;37442:182;:::o;37630:366::-;37772:3;37793:67;37857:2;37852:3;37793:67;:::i;:::-;37786:74;;37869:93;37958:3;37869:93;:::i;:::-;37987:2;37982:3;37978:12;37971:19;;37630:366;;;:::o;38002:419::-;38168:4;38206:2;38195:9;38191:18;38183:26;;38255:9;38249:4;38245:20;38241:1;38230:9;38226:17;38219:47;38283:131;38409:4;38283:131;:::i;:::-;38275:139;;38002:419;;;:::o;38427:227::-;38567:34;38563:1;38555:6;38551:14;38544:58;38636:10;38631:2;38623:6;38619:15;38612:35;38427:227;:::o;38660:366::-;38802:3;38823:67;38887:2;38882:3;38823:67;:::i;:::-;38816:74;;38899:93;38988:3;38899:93;:::i;:::-;39017:2;39012:3;39008:12;39001:19;;38660:366;;;:::o;39032:419::-;39198:4;39236:2;39225:9;39221:18;39213:26;;39285:9;39279:4;39275:20;39271:1;39260:9;39256:17;39249:47;39313:131;39439:4;39313:131;:::i;:::-;39305:139;;39032:419;;;:::o;39457:224::-;39597:34;39593:1;39585:6;39581:14;39574:58;39666:7;39661:2;39653:6;39649:15;39642:32;39457:224;:::o;39687:366::-;39829:3;39850:67;39914:2;39909:3;39850:67;:::i;:::-;39843:74;;39926:93;40015:3;39926:93;:::i;:::-;40044:2;40039:3;40035:12;40028:19;;39687:366;;;:::o;40059:419::-;40225:4;40263:2;40252:9;40248:18;40240:26;;40312:9;40306:4;40302:20;40298:1;40287:9;40283:17;40276:47;40340:131;40466:4;40340:131;:::i;:::-;40332:139;;40059:419;;;:::o;40484:229::-;40624:34;40620:1;40612:6;40608:14;40601:58;40693:12;40688:2;40680:6;40676:15;40669:37;40484:229;:::o;40719:366::-;40861:3;40882:67;40946:2;40941:3;40882:67;:::i;:::-;40875:74;;40958:93;41047:3;40958:93;:::i;:::-;41076:2;41071:3;41067:12;41060:19;;40719:366;;;:::o;41091:419::-;41257:4;41295:2;41284:9;41280:18;41272:26;;41344:9;41338:4;41334:20;41330:1;41319:9;41315:17;41308:47;41372:131;41498:4;41372:131;:::i;:::-;41364:139;;41091:419;;;:::o;41516:634::-;41737:4;41775:2;41764:9;41760:18;41752:26;;41824:9;41818:4;41814:20;41810:1;41799:9;41795:17;41788:47;41852:108;41955:4;41946:6;41852:108;:::i;:::-;41844:116;;42007:9;42001:4;41997:20;41992:2;41981:9;41977:18;41970:48;42035:108;42138:4;42129:6;42035:108;:::i;:::-;42027:116;;41516:634;;;;;:::o;42156:228::-;42296:34;42292:1;42284:6;42280:14;42273:58;42365:11;42360:2;42352:6;42348:15;42341:36;42156:228;:::o;42390:366::-;42532:3;42553:67;42617:2;42612:3;42553:67;:::i;:::-;42546:74;;42629:93;42718:3;42629:93;:::i;:::-;42747:2;42742:3;42738:12;42731:19;;42390:366;;;:::o;42762:419::-;42928:4;42966:2;42955:9;42951:18;42943:26;;43015:9;43009:4;43005:20;43001:1;42990:9;42986:17;42979:47;43043:131;43169:4;43043:131;:::i;:::-;43035:139;;42762:419;;;:::o;43187:220::-;43327:34;43323:1;43315:6;43311:14;43304:58;43396:3;43391:2;43383:6;43379:15;43372:28;43187:220;:::o;43413:366::-;43555:3;43576:67;43640:2;43635:3;43576:67;:::i;:::-;43569:74;;43652:93;43741:3;43652:93;:::i;:::-;43770:2;43765:3;43761:12;43754:19;;43413:366;;;:::o;43785:419::-;43951:4;43989:2;43978:9;43974:18;43966:26;;44038:9;44032:4;44028:20;44024:1;44013:9;44009:17;44002:47;44066:131;44192:4;44066:131;:::i;:::-;44058:139;;43785:419;;;:::o;44210:332::-;44331:4;44369:2;44358:9;44354:18;44346:26;;44382:71;44450:1;44439:9;44435:17;44426:6;44382:71;:::i;:::-;44463:72;44531:2;44520:9;44516:18;44507:6;44463:72;:::i;:::-;44210:332;;;;;:::o;44548:98::-;44599:6;44633:5;44627:12;44617:22;;44548:98;;;:::o;44652:168::-;44735:11;44769:6;44764:3;44757:19;44809:4;44804:3;44800:14;44785:29;;44652:168;;;;:::o;44826:373::-;44912:3;44940:38;44972:5;44940:38;:::i;:::-;44994:70;45057:6;45052:3;44994:70;:::i;:::-;44987:77;;45073:65;45131:6;45126:3;45119:4;45112:5;45108:16;45073:65;:::i;:::-;45163:29;45185:6;45163:29;:::i;:::-;45158:3;45154:39;45147:46;;44916:283;44826:373;;;;:::o;45205:1053::-;45528:4;45566:3;45555:9;45551:19;45543:27;;45580:71;45648:1;45637:9;45633:17;45624:6;45580:71;:::i;:::-;45661:72;45729:2;45718:9;45714:18;45705:6;45661:72;:::i;:::-;45780:9;45774:4;45770:20;45765:2;45754:9;45750:18;45743:48;45808:108;45911:4;45902:6;45808:108;:::i;:::-;45800:116;;45963:9;45957:4;45953:20;45948:2;45937:9;45933:18;45926:48;45991:108;46094:4;46085:6;45991:108;:::i;:::-;45983:116;;46147:9;46141:4;46137:20;46131:3;46120:9;46116:19;46109:49;46175:76;46246:4;46237:6;46175:76;:::i;:::-;46167:84;;45205:1053;;;;;;;;:::o;46264:141::-;46320:5;46351:6;46345:13;46336:22;;46367:32;46393:5;46367:32;:::i;:::-;46264:141;;;;:::o;46411:349::-;46480:6;46529:2;46517:9;46508:7;46504:23;46500:32;46497:119;;;46535:79;;:::i;:::-;46497:119;46655:1;46680:63;46735:7;46726:6;46715:9;46711:22;46680:63;:::i;:::-;46670:73;;46626:127;46411:349;;;;:::o;46766:106::-;46810:8;46859:5;46854:3;46850:15;46829:36;;46766:106;;;:::o;46878:183::-;46913:3;46951:1;46933:16;46930:23;46927:128;;;46989:1;46986;46983;46968:23;47011:34;47042:1;47036:8;47011:34;:::i;:::-;47004:41;;46927:128;46878:183;:::o;47067:711::-;47106:3;47144:4;47126:16;47123:26;47152:5;47120:39;47181:20;;:::i;:::-;47256:1;47238:16;47234:24;47231:1;47225:4;47210:49;47289:4;47283:11;47388:16;47381:4;47373:6;47369:17;47366:39;47333:18;47325:6;47322:30;47306:113;47303:146;;;47434:5;;;;47303:146;47480:6;47474:4;47470:17;47516:3;47510:10;47543:18;47535:6;47532:30;47529:43;;;47565:5;;;;;;47529:43;47613:6;47606:4;47601:3;47597:14;47593:27;47672:1;47654:16;47650:24;47644:4;47640:35;47635:3;47632:44;47629:57;;;47679:5;;;;;;;47629:57;47696;47744:6;47738:4;47734:17;47726:6;47722:30;47716:4;47696:57;:::i;:::-;47769:3;47762:10;;47110:668;;;;;47067:711;;:::o;47784:239::-;47924:34;47920:1;47912:6;47908:14;47901:58;47993:22;47988:2;47980:6;47976:15;47969:47;47784:239;:::o;48029:366::-;48171:3;48192:67;48256:2;48251:3;48192:67;:::i;:::-;48185:74;;48268:93;48357:3;48268:93;:::i;:::-;48386:2;48381:3;48377:12;48370:19;;48029:366;;;:::o;48401:419::-;48567:4;48605:2;48594:9;48590:18;48582:26;;48654:9;48648:4;48644:20;48640:1;48629:9;48625:17;48618:47;48682:131;48808:4;48682:131;:::i;:::-;48674:139;;48401:419;;;:::o;48826:227::-;48966:34;48962:1;48954:6;48950:14;48943:58;49035:10;49030:2;49022:6;49018:15;49011:35;48826:227;:::o;49059:366::-;49201:3;49222:67;49286:2;49281:3;49222:67;:::i;:::-;49215:74;;49298:93;49387:3;49298:93;:::i;:::-;49416:2;49411:3;49407:12;49400:19;;49059:366;;;:::o;49431:419::-;49597:4;49635:2;49624:9;49620:18;49612:26;;49684:9;49678:4;49674:20;49670:1;49659:9;49655:17;49648:47;49712:131;49838:4;49712:131;:::i;:::-;49704:139;;49431:419;;;:::o;49856:751::-;50079:4;50117:3;50106:9;50102:19;50094:27;;50131:71;50199:1;50188:9;50184:17;50175:6;50131:71;:::i;:::-;50212:72;50280:2;50269:9;50265:18;50256:6;50212:72;:::i;:::-;50294;50362:2;50351:9;50347:18;50338:6;50294:72;:::i;:::-;50376;50444:2;50433:9;50429:18;50420:6;50376:72;:::i;:::-;50496:9;50490:4;50486:20;50480:3;50469:9;50465:19;50458:49;50524:76;50595:4;50586:6;50524:76;:::i;:::-;50516:84;;49856:751;;;;;;;;:::o

Swarm Source

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