Token SquaremenAirdrop

 

Overview ERC-1155

Total Supply:
0 SQDROP

Holders:
36,264 addresses
 
Balance
0 SQDROP
0xdf2aead1c2cc60248969102e4d917377b2701486
Loading
[ Download CSV Export  ] 
Loading
Loading

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

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xB59f82F3E8277c03dAF6BD8f3d4D415aB00FCD35

Contract Name:
SquaremenAds

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-16
*/

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



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() {
        _setOwner(_msgSender());
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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");
        _setOwner(newOwner);
    }

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

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



pragma solidity ^0.8.0;

/**
 * @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
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/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



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 v4.4.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.
        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. 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 v4.4.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 be 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.0 (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 v4.4.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: balance query for the zero address");
        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 owner nor 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: transfer caller is not owner nor 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();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), 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);

        _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);

        _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();

        _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);

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

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

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * 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);

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

    /**
     * @dev Destroys `amount` tokens of token type `id` from `from`
     *
     * 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();

        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        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);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * 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);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {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 `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 _beforeTokenTransfer(
        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: contracts/ads.sol

pragma solidity 0.8.6;



contract SquaremenAds is ERC1155, Ownable {

    string public name;
    string public symbol;
    mapping (uint256 => string) private _uris;

  

    constructor() ERC1155("") {
        name = "SquaremenAirdrop";
        symbol = "SQDROP";
    }

    function airdrop(address[] calldata _addresses, string calldata _uri, uint256 nonce)
        external
        onlyOwner
    {
        uint256 arrayLength = _addresses.length;
        for (uint256 i = 0; i < arrayLength; i++) {
            address current = _addresses[i];
            if (current != address(0)) {
                _mint(current, nonce, 1, "");
            }
        }
        _uris[nonce]=_uri;
    }


    function uri(uint256 tokenId) override public view returns (string memory) {
        return(_uris[tokenId]);
    }


    function setUri(string calldata _uri, uint32 index )  external onlyOwner {
        _uris[index]=_uri;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"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"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"string","name":"_uri","type":"string"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"_uri","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"name":"setUri","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051806020016040528060008152506200003381620000f660201b60201c565b5062000054620000486200011260201b60201c565b6200011a60201b60201c565b6040518060400160405280601081526020017f5371756172656d656e41697264726f700000000000000000000000000000000081525060049080519060200190620000a1929190620001e0565b506040518060400160405280600681526020017f535144524f50000000000000000000000000000000000000000000000000000081525060059080519060200190620000ef929190620001e0565b50620002f5565b80600290805190602001906200010e929190620001e0565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001ee9062000290565b90600052602060002090601f0160209004810192826200021257600085556200025e565b82601f106200022d57805160ff19168380011785556200025e565b828001600101855582156200025e579182015b828111156200025d57825182559160200191906001019062000240565b5b5090506200026d919062000271565b5090565b5b808211156200028c57600081600090555060010162000272565b5090565b60006002820490506001821680620002a957607f821691505b60208210811415620002c057620002bf620002c6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61325980620003056000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c80634e1273f411610097578063a22cb46511610066578063a22cb46514610271578063e985e9c51461028d578063f242432a146102bd578063f2fde38b146102d9576100f4565b80634e1273f4146101fb578063715018a61461022b5780638da5cb5b1461023557806395d89b4114610253576100f4565b80630832a601116100d35780630832a601146101775780630e89341c146101935780631d0c2f3a146101c35780632eb2c2d6146101df576100f4565b8062fdd58e146100f957806301ffc9a71461012957806306fdde0314610159575b600080fd5b610113600480360381019061010e91906120c6565b6102f5565b60405161012091906128f8565b60405180910390f35b610143600480360381019061013e9190612213565b6103be565b604051610150919061271b565b60405180910390f35b6101616104a0565b60405161016e9190612736565b60405180910390f35b610191600480360381019061018c919061226d565b61052e565b005b6101ad60048036038101906101a891906122cd565b6105d8565b6040516101ba9190612736565b60405180910390f35b6101dd60048036038101906101d89190612106565b61067d565b005b6101f960048036038101906101f49190611f20565b6107c9565b005b6102156004803603810190610210919061219b565b61086a565b60405161022291906126c2565b60405180910390f35b610233610983565b005b61023d610a0b565b60405161024a91906125e5565b60405180910390f35b61025b610a35565b6040516102689190612736565b60405180910390f35b61028b60048036038101906102869190612086565b610ac3565b005b6102a760048036038101906102a29190611ee0565b610ad9565b6040516102b4919061271b565b60405180910390f35b6102d760048036038101906102d29190611fef565b610b6d565b005b6102f360048036038101906102ee9190611eb3565b610c0e565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035d90612798565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610499575061049882610d06565b5b9050919050565b600480546104ad90612b77565b80601f01602080910402602001604051908101604052809291908181526020018280546104d990612b77565b80156105265780601f106104fb57610100808354040283529160200191610526565b820191906000526020600020905b81548152906001019060200180831161050957829003601f168201915b505050505081565b610536610d70565b73ffffffffffffffffffffffffffffffffffffffff16610554610a0b565b73ffffffffffffffffffffffffffffffffffffffff16146105aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a190612858565b60405180910390fd5b8282600660008463ffffffff16815260200190815260200160002091906105d2929190611b3a565b50505050565b60606006600083815260200190815260200160002080546105f890612b77565b80601f016020809104026020016040519081016040528092919081815260200182805461062490612b77565b80156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b50505050509050919050565b610685610d70565b73ffffffffffffffffffffffffffffffffffffffff166106a3610a0b565b73ffffffffffffffffffffffffffffffffffffffff16146106f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f090612858565b60405180910390fd5b600085859050905060005b8181101561079d57600087878381811061072157610720612c81565b5b90506020020160208101906107369190611eb3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610789576107888185600160405180602001604052806000815250610d78565b5b50808061079590612bda565b915050610704565b5083836006600085815260200190815260200160002091906107c0929190611b3a565b50505050505050565b6107d1610d70565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610817575061081685610811610d70565b610ad9565b5b610856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084d90612818565b60405180910390fd5b6108638585858585610f0e565b5050505050565b606081518351146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a790612898565b60405180910390fd5b6000835167ffffffffffffffff8111156108cd576108cc612cb0565b5b6040519080825280602002602001820160405280156108fb5781602001602082028036833780820191505090505b50905060005b8451811015610978576109488582815181106109205761091f612c81565b5b602002602001015185838151811061093b5761093a612c81565b5b60200260200101516102f5565b82828151811061095b5761095a612c81565b5b6020026020010181815250508061097190612bda565b9050610901565b508091505092915050565b61098b610d70565b73ffffffffffffffffffffffffffffffffffffffff166109a9610a0b565b73ffffffffffffffffffffffffffffffffffffffff16146109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612858565b60405180910390fd5b610a096000611222565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058054610a4290612b77565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90612b77565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b505050505081565b610ad5610ace610d70565b83836112e8565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b75610d70565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610bbb5750610bba85610bb5610d70565b610ad9565b5b610bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf1906127d8565b60405180910390fd5b610c078585858585611455565b5050505050565b610c16610d70565b73ffffffffffffffffffffffffffffffffffffffff16610c34610a0b565b73ffffffffffffffffffffffffffffffffffffffff1614610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8190612858565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf1906127b8565b60405180910390fd5b610d0381611222565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906128d8565b60405180910390fd5b6000610df2610d70565b9050610e1381600087610e04886116d7565b610e0d886116d7565b87611751565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e729190612a5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051610ef0929190612913565b60405180910390a4610f0781600087878787611759565b5050505050565b8151835114610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f49906128b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb9906127f8565b60405180910390fd5b6000610fcc610d70565b9050610fdc818787878787611751565b60005b845181101561118d576000858281518110610ffd57610ffc612c81565b5b60200260200101519050600085838151811061101c5761101b612c81565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490612838565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111729190612a5b565b925050819055505050508061118690612bda565b9050610fdf565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112049291906126e4565b60405180910390a461121a818787878787611940565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e90612878565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611448919061271b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc906127f8565b60405180910390fd5b60006114cf610d70565b90506114ef8187876114e0886116d7565b6114e9886116d7565b87611751565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90612838565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461163b9190612a5b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516116b8929190612913565b60405180910390a46116ce828888888888611759565b50505050505050565b60606000600167ffffffffffffffff8111156116f6576116f5612cb0565b5b6040519080825280602002602001820160405280156117245781602001602082028036833780820191505090505b509050828160008151811061173c5761173b612c81565b5b60200260200101818152505080915050919050565b505050505050565b6117788473ffffffffffffffffffffffffffffffffffffffff16611b27565b15611938578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016117be959493929190612668565b602060405180830381600087803b1580156117d857600080fd5b505af192505050801561180957506040513d601f19601f820116820180604052508101906118069190612240565b60015b6118af57611815612cdf565b806308c379a01415611872575061182a61311a565b806118355750611874565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699190612736565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690612758565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90612778565b60405180910390fd5b505b505050505050565b61195f8473ffffffffffffffffffffffffffffffffffffffff16611b27565b15611b1f578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016119a5959493929190612600565b602060405180830381600087803b1580156119bf57600080fd5b505af19250505080156119f057506040513d601f19601f820116820180604052508101906119ed9190612240565b60015b611a96576119fc612cdf565b806308c379a01415611a595750611a1161311a565b80611a1c5750611a5b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a509190612736565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90612758565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490612778565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054611b4690612b77565b90600052602060002090601f016020900481019282611b685760008555611baf565b82601f10611b8157803560ff1916838001178555611baf565b82800160010185558215611baf579182015b82811115611bae578235825591602001919060010190611b93565b5b509050611bbc9190611bc0565b5090565b5b80821115611bd9576000816000905550600101611bc1565b5090565b6000611bf0611beb84612961565b61293c565b90508083825260208201905082856020860282011115611c1357611c12612d0b565b5b60005b85811015611c435781611c298882611cff565b845260208401935060208301925050600181019050611c16565b5050509392505050565b6000611c60611c5b8461298d565b61293c565b90508083825260208201905082856020860282011115611c8357611c82612d0b565b5b60005b85811015611cb35781611c998882611e89565b845260208401935060208301925050600181019050611c86565b5050509392505050565b6000611cd0611ccb846129b9565b61293c565b905082815260208101848484011115611cec57611ceb612d10565b5b611cf7848285612b35565b509392505050565b600081359050611d0e816131b0565b92915050565b60008083601f840112611d2a57611d29612d06565b5b8235905067ffffffffffffffff811115611d4757611d46612d01565b5b602083019150836020820283011115611d6357611d62612d0b565b5b9250929050565b600082601f830112611d7f57611d7e612d06565b5b8135611d8f848260208601611bdd565b91505092915050565b600082601f830112611dad57611dac612d06565b5b8135611dbd848260208601611c4d565b91505092915050565b600081359050611dd5816131c7565b92915050565b600081359050611dea816131de565b92915050565b600081519050611dff816131de565b92915050565b600082601f830112611e1a57611e19612d06565b5b8135611e2a848260208601611cbd565b91505092915050565b60008083601f840112611e4957611e48612d06565b5b8235905067ffffffffffffffff811115611e6657611e65612d01565b5b602083019150836001820283011115611e8257611e81612d0b565b5b9250929050565b600081359050611e98816131f5565b92915050565b600081359050611ead8161320c565b92915050565b600060208284031215611ec957611ec8612d1a565b5b6000611ed784828501611cff565b91505092915050565b60008060408385031215611ef757611ef6612d1a565b5b6000611f0585828601611cff565b9250506020611f1685828601611cff565b9150509250929050565b600080600080600060a08688031215611f3c57611f3b612d1a565b5b6000611f4a88828901611cff565b9550506020611f5b88828901611cff565b945050604086013567ffffffffffffffff811115611f7c57611f7b612d15565b5b611f8888828901611d98565b935050606086013567ffffffffffffffff811115611fa957611fa8612d15565b5b611fb588828901611d98565b925050608086013567ffffffffffffffff811115611fd657611fd5612d15565b5b611fe288828901611e05565b9150509295509295909350565b600080600080600060a0868803121561200b5761200a612d1a565b5b600061201988828901611cff565b955050602061202a88828901611cff565b945050604061203b88828901611e89565b935050606061204c88828901611e89565b925050608086013567ffffffffffffffff81111561206d5761206c612d15565b5b61207988828901611e05565b9150509295509295909350565b6000806040838503121561209d5761209c612d1a565b5b60006120ab85828601611cff565b92505060206120bc85828601611dc6565b9150509250929050565b600080604083850312156120dd576120dc612d1a565b5b60006120eb85828601611cff565b92505060206120fc85828601611e89565b9150509250929050565b60008060008060006060868803121561212257612121612d1a565b5b600086013567ffffffffffffffff8111156121405761213f612d15565b5b61214c88828901611d14565b9550955050602086013567ffffffffffffffff81111561216f5761216e612d15565b5b61217b88828901611e33565b9350935050604061218e88828901611e89565b9150509295509295909350565b600080604083850312156121b2576121b1612d1a565b5b600083013567ffffffffffffffff8111156121d0576121cf612d15565b5b6121dc85828601611d6a565b925050602083013567ffffffffffffffff8111156121fd576121fc612d15565b5b61220985828601611d98565b9150509250929050565b60006020828403121561222957612228612d1a565b5b600061223784828501611ddb565b91505092915050565b60006020828403121561225657612255612d1a565b5b600061226484828501611df0565b91505092915050565b60008060006040848603121561228657612285612d1a565b5b600084013567ffffffffffffffff8111156122a4576122a3612d15565b5b6122b086828701611e33565b935093505060206122c386828701611e9e565b9150509250925092565b6000602082840312156122e3576122e2612d1a565b5b60006122f184828501611e89565b91505092915050565b600061230683836125c7565b60208301905092915050565b61231b81612ab1565b82525050565b600061232c826129fa565b6123368185612a28565b9350612341836129ea565b8060005b8381101561237257815161235988826122fa565b975061236483612a1b565b925050600181019050612345565b5085935050505092915050565b61238881612ac3565b82525050565b600061239982612a05565b6123a38185612a39565b93506123b3818560208601612b44565b6123bc81612d1f565b840191505092915050565b60006123d282612a10565b6123dc8185612a4a565b93506123ec818560208601612b44565b6123f581612d1f565b840191505092915050565b600061240d603483612a4a565b915061241882612d3d565b604082019050919050565b6000612430602883612a4a565b915061243b82612d8c565b604082019050919050565b6000612453602b83612a4a565b915061245e82612ddb565b604082019050919050565b6000612476602683612a4a565b915061248182612e2a565b604082019050919050565b6000612499602983612a4a565b91506124a482612e79565b604082019050919050565b60006124bc602583612a4a565b91506124c782612ec8565b604082019050919050565b60006124df603283612a4a565b91506124ea82612f17565b604082019050919050565b6000612502602a83612a4a565b915061250d82612f66565b604082019050919050565b6000612525602083612a4a565b915061253082612fb5565b602082019050919050565b6000612548602983612a4a565b915061255382612fde565b604082019050919050565b600061256b602983612a4a565b91506125768261302d565b604082019050919050565b600061258e602883612a4a565b91506125998261307c565b604082019050919050565b60006125b1602183612a4a565b91506125bc826130cb565b604082019050919050565b6125d081612b1b565b82525050565b6125df81612b1b565b82525050565b60006020820190506125fa6000830184612312565b92915050565b600060a0820190506126156000830188612312565b6126226020830187612312565b81810360408301526126348186612321565b905081810360608301526126488185612321565b9050818103608083015261265c818461238e565b90509695505050505050565b600060a08201905061267d6000830188612312565b61268a6020830187612312565b61269760408301866125d6565b6126a460608301856125d6565b81810360808301526126b6818461238e565b90509695505050505050565b600060208201905081810360008301526126dc8184612321565b905092915050565b600060408201905081810360008301526126fe8185612321565b905081810360208301526127128184612321565b90509392505050565b6000602082019050612730600083018461237f565b92915050565b6000602082019050818103600083015261275081846123c7565b905092915050565b6000602082019050818103600083015261277181612400565b9050919050565b6000602082019050818103600083015261279181612423565b9050919050565b600060208201905081810360008301526127b181612446565b9050919050565b600060208201905081810360008301526127d181612469565b9050919050565b600060208201905081810360008301526127f18161248c565b9050919050565b60006020820190508181036000830152612811816124af565b9050919050565b60006020820190508181036000830152612831816124d2565b9050919050565b60006020820190508181036000830152612851816124f5565b9050919050565b6000602082019050818103600083015261287181612518565b9050919050565b600060208201905081810360008301526128918161253b565b9050919050565b600060208201905081810360008301526128b18161255e565b9050919050565b600060208201905081810360008301526128d181612581565b9050919050565b600060208201905081810360008301526128f1816125a4565b9050919050565b600060208201905061290d60008301846125d6565b92915050565b600060408201905061292860008301856125d6565b61293560208301846125d6565b9392505050565b6000612946612957565b90506129528282612ba9565b919050565b6000604051905090565b600067ffffffffffffffff82111561297c5761297b612cb0565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156129a8576129a7612cb0565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156129d4576129d3612cb0565b5b6129dd82612d1f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612a6682612b1b565b9150612a7183612b1b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612aa657612aa5612c23565b5b828201905092915050565b6000612abc82612afb565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015612b62578082015181840152602081019050612b47565b83811115612b71576000848401525b50505050565b60006002820490506001821680612b8f57607f821691505b60208210811415612ba357612ba2612c52565b5b50919050565b612bb282612d1f565b810181811067ffffffffffffffff82111715612bd157612bd0612cb0565b5b80604052505050565b6000612be582612b1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c1857612c17612c23565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612cfe5760046000803e612cfb600051612d30565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561312a576131ad565b613132612957565b60043d036004823e80513d602482011167ffffffffffffffff8211171561315a5750506131ad565b808201805167ffffffffffffffff81111561317857505050506131ad565b80602083010160043d0385018111156131955750505050506131ad565b6131a482602001850186612ba9565b82955050505050505b90565b6131b981612ab1565b81146131c457600080fd5b50565b6131d081612ac3565b81146131db57600080fd5b50565b6131e781612acf565b81146131f257600080fd5b50565b6131fe81612b1b565b811461320957600080fd5b50565b61321581612b25565b811461322057600080fd5b5056fea2646970667358221220b3938515a879ab46f9d5fdc01398225b9d3b2f1872a5c346ac6700d7b975899c64736f6c63430008060033

Deployed ByteCode Sourcemap

35988:942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22425:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21448:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36039:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36816:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36690:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36253:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24364:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22822:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2430:94;;;:::i;:::-;;1779:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36064:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23419:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23646:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23886:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2679:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22425:231;22511:7;22558:1;22539:21;;:7;:21;;;;22531:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22626:9;:13;22636:2;22626:13;;;;;;;;;;;:22;22640:7;22626:22;;;;;;;;;;;;;;;;22619:29;;22425:231;;;;:::o;21448:310::-;21550:4;21602:26;21587:41;;;:11;:41;;;;:110;;;;21660:37;21645:52;;;:11;:52;;;;21587:110;:163;;;;21714:36;21738:11;21714:23;:36::i;:::-;21587:163;21567:183;;21448:310;;;:::o;36039:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36816:109::-;2010:12;:10;:12::i;:::-;1999:23;;:7;:5;:7::i;:::-;:23;;;1991:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36913:4:::1;;36900:5;:12;36906:5;36900:12;;;;;;;;;;;;;:17;;;;;;;:::i;:::-;;36816:109:::0;;;:::o;36690:116::-;36750:13;36783:5;:14;36789:7;36783:14;;;;;;;;;;;36776:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36690:116;;;:::o;36253:427::-;2010:12;:10;:12::i;:::-;1999:23;;:7;:5;:7::i;:::-;:23;;;1991:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36391:19:::1;36413:10;;:17;;36391:39;;36446:9;36441:204;36465:11;36461:1;:15;36441:204;;;36498:15;36516:10;;36527:1;36516:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;36498:31;;36567:1;36548:21;;:7;:21;;;36544:90;;36590:28;36596:7;36605:5;36612:1;36590:28;;;;;;;;;;;::::0;:5:::1;:28::i;:::-;36544:90;36483:162;36478:3;;;;;:::i;:::-;;;;36441:204;;;;36668:4;;36655:5;:12;36661:5;36655:12;;;;;;;;;;;:17;;;;;;;:::i;:::-;;36380:300;36253:427:::0;;;;;:::o;24364:442::-;24605:12;:10;:12::i;:::-;24597:20;;:4;:20;;;:60;;;;24621:36;24638:4;24644:12;:10;:12::i;:::-;24621:16;:36::i;:::-;24597:60;24575:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;24746:52;24769:4;24775:2;24779:3;24784:7;24793:4;24746:22;:52::i;:::-;24364:442;;;;;:::o;22822:524::-;22978:16;23039:3;:10;23020:8;:15;:29;23012:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23108:30;23155:8;:15;23141:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23108:63;;23189:9;23184:122;23208:8;:15;23204:1;:19;23184:122;;;23264:30;23274:8;23283:1;23274:11;;;;;;;;:::i;:::-;;;;;;;;23287:3;23291:1;23287:6;;;;;;;;:::i;:::-;;;;;;;;23264:9;:30::i;:::-;23245:13;23259:1;23245:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;23225:3;;;;:::i;:::-;;;23184:122;;;;23325:13;23318:20;;;22822:524;;;;:::o;2430:94::-;2010:12;:10;:12::i;:::-;1999:23;;:7;:5;:7::i;:::-;:23;;;1991:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2495:21:::1;2513:1;2495:9;:21::i;:::-;2430:94::o:0;1779:87::-;1825:7;1852:6;;;;;;;;;;;1845:13;;1779:87;:::o;36064:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23419:155::-;23514:52;23533:12;:10;:12::i;:::-;23547:8;23557;23514:18;:52::i;:::-;23419:155;;:::o;23646:168::-;23745:4;23769:18;:27;23788:7;23769:27;;;;;;;;;;;;;;;:37;23797:8;23769:37;;;;;;;;;;;;;;;;;;;;;;;;;23762:44;;23646:168;;;;:::o;23886:401::-;24102:12;:10;:12::i;:::-;24094:20;;:4;:20;;;:60;;;;24118:36;24135:4;24141:12;:10;:12::i;:::-;24118:16;:36::i;:::-;24094:60;24072:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;24234:45;24252:4;24258:2;24262;24266:6;24274:4;24234:17;:45::i;:::-;23886:401;;;;;:::o;2679:192::-;2010:12;:10;:12::i;:::-;1999:23;;:7;:5;:7::i;:::-;:23;;;1991:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1:::1;2768:22;;:8;:22;;;;2760:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2844:19;2854:8;2844:9;:19::i;:::-;2679:192:::0;:::o;12803:157::-;12888:4;12927:25;12912:40;;;:11;:40;;;;12905:47;;12803:157;;;:::o;567:98::-;620:7;647:10;640:17;;567:98;:::o;28840:569::-;29007:1;28993:16;;:2;:16;;;;28985:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29060:16;29079:12;:10;:12::i;:::-;29060:31;;29104:102;29125:8;29143:1;29147:2;29151:21;29169:2;29151:17;:21::i;:::-;29174:25;29192:6;29174:17;:25::i;:::-;29201:4;29104:20;:102::i;:::-;29240:6;29219:9;:13;29229:2;29219:13;;;;;;;;;;;:17;29233:2;29219:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29299:2;29262:52;;29295:1;29262:52;;29277:8;29262:52;;;29303:2;29307:6;29262:52;;;;;;;:::i;:::-;;;;;;;;29327:74;29358:8;29376:1;29380:2;29384;29388:6;29396:4;29327:30;:74::i;:::-;28974:435;28840:569;;;;:::o;26448:1074::-;26675:7;:14;26661:3;:10;:28;26653:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26767:1;26753:16;;:2;:16;;;;26745:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26824:16;26843:12;:10;:12::i;:::-;26824:31;;26868:60;26889:8;26899:4;26905:2;26909:3;26914:7;26923:4;26868:20;:60::i;:::-;26946:9;26941:421;26965:3;:10;26961:1;:14;26941:421;;;26997:10;27010:3;27014:1;27010:6;;;;;;;;:::i;:::-;;;;;;;;26997:19;;27031:14;27048:7;27056:1;27048:10;;;;;;;;:::i;:::-;;;;;;;;27031:27;;27075:19;27097:9;:13;27107:2;27097:13;;;;;;;;;;;:19;27111:4;27097:19;;;;;;;;;;;;;;;;27075:41;;27154:6;27139:11;:21;;27131:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27287:6;27273:11;:20;27251:9;:13;27261:2;27251:13;;;;;;;;;;;:19;27265:4;27251:19;;;;;;;;;;;;;;;:42;;;;27344:6;27323:9;:13;27333:2;27323:13;;;;;;;;;;;:17;27337:2;27323:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26982:380;;;26977:3;;;;:::i;:::-;;;26941:421;;;;27409:2;27379:47;;27403:4;27379:47;;27393:8;27379:47;;;27413:3;27418:7;27379:47;;;;;;;:::i;:::-;;;;;;;;27439:75;27475:8;27485:4;27491:2;27495:3;27500:7;27509:4;27439:35;:75::i;:::-;26642:880;26448:1074;;;;;:::o;2879:173::-;2935:16;2954:6;;;;;;;;;;;2935:25;;2980:8;2971:6;;:17;;;;;;;;;;;;;;;;;;3035:8;3004:40;;3025:8;3004:40;;;;;;;;;;;;2924:128;2879:173;:::o;32634:331::-;32789:8;32780:17;;:5;:17;;;;32772:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;32892:8;32854:18;:25;32873:5;32854:25;;;;;;;;;;;;;;;:35;32880:8;32854:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32938:8;32916:41;;32931:5;32916:41;;;32948:8;32916:41;;;;;;:::i;:::-;;;;;;;;32634:331;;;:::o;25270:820::-;25472:1;25458:16;;:2;:16;;;;25450:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25529:16;25548:12;:10;:12::i;:::-;25529:31;;25573:96;25594:8;25604:4;25610:2;25614:21;25632:2;25614:17;:21::i;:::-;25637:25;25655:6;25637:17;:25::i;:::-;25664:4;25573:20;:96::i;:::-;25682:19;25704:9;:13;25714:2;25704:13;;;;;;;;;;;:19;25718:4;25704:19;;;;;;;;;;;;;;;;25682:41;;25757:6;25742:11;:21;;25734:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25882:6;25868:11;:20;25846:9;:13;25856:2;25846:13;;;;;;;;;;;:19;25860:4;25846:19;;;;;;;;;;;;;;;:42;;;;25931:6;25910:9;:13;25920:2;25910:13;;;;;;;;;;;:17;25924:2;25910:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25986:2;25955:46;;25980:4;25955:46;;25970:8;25955:46;;;25990:2;25994:6;25955:46;;;;;;;:::i;:::-;;;;;;;;26014:68;26045:8;26055:4;26061:2;26065;26069:6;26077:4;26014:30;:68::i;:::-;25439:651;;25270:820;;;;;:::o;35723:198::-;35789:16;35818:22;35857:1;35843:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35818:41;;35881:7;35870:5;35876:1;35870:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;35908:5;35901:12;;;35723:198;;;:::o;33921:221::-;;;;;;;:::o;34150:744::-;34365:15;:2;:13;;;:15::i;:::-;34361:526;;;34418:2;34401:38;;;34440:8;34450:4;34456:2;34460:6;34468:4;34401:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34397:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;34749:6;34742:14;;;;;;;;;;;:::i;:::-;;;;;;;;34397:479;;;34798:62;;;;;;;;;;:::i;:::-;;;;;;;;34397:479;34535:43;;;34523:55;;;:8;:55;;;;34519:154;;34603:50;;;;;;;;;;:::i;:::-;;;;;;;;34519:154;34474:214;34361:526;34150:744;;;;;;:::o;34902:813::-;35142:15;:2;:13;;;:15::i;:::-;35138:570;;;35195:2;35178:43;;;35222:8;35232:4;35238:3;35243:7;35252:4;35178:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35174:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;35570:6;35563:14;;;;;;;;;;;:::i;:::-;;;;;;;;35174:523;;;35619:62;;;;;;;;;;:::i;:::-;;;;;;;;35174:523;35351:48;;;35339:60;;;:8;:60;;;;35335:159;;35424:50;;;;;;;;;;:::i;:::-;;;;;;;;35335:159;35258:251;35138:570;34902:813;;;;;;:::o;3825:387::-;3885:4;4093:12;4160:7;4148:20;4140:28;;4203:1;4196:4;:8;4189:15;;;3825:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;404:79;;:::i;:::-;350:2;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;;;;;;:::o;769:722::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:2;;;1149:79;;:::i;:::-;1095:2;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:2;;;1770:79;;:::i;:::-;1739:2;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1965:87;;;;:::o;2075:568::-;2148:8;2158:6;2208:3;2201:4;2193:6;2189:17;2185:27;2175:2;;2216:79;;:::i;:::-;2175:2;2329:6;2316:20;2306:30;;2359:18;2351:6;2348:30;2345:2;;;2381:79;;:::i;:::-;2345:2;2495:4;2487:6;2483:17;2471:29;;2549:3;2541:4;2533:6;2529:17;2519:8;2515:32;2512:41;2509:2;;;2556:79;;:::i;:::-;2509:2;2165:478;;;;;:::o;2666:370::-;2737:5;2786:3;2779:4;2771:6;2767:17;2763:27;2753:2;;2794:79;;:::i;:::-;2753:2;2911:6;2898:20;2936:94;3026:3;3018:6;3011:4;3003:6;2999:17;2936:94;:::i;:::-;2927:103;;2743:293;;;;;:::o;3059:370::-;3130:5;3179:3;3172:4;3164:6;3160:17;3156:27;3146:2;;3187:79;;:::i;:::-;3146:2;3304:6;3291:20;3329:94;3419:3;3411:6;3404:4;3396:6;3392:17;3329:94;:::i;:::-;3320:103;;3136:293;;;;;:::o;3435:133::-;3478:5;3516:6;3503:20;3494:29;;3532:30;3556:5;3532:30;:::i;:::-;3484:84;;;;:::o;3574:137::-;3619:5;3657:6;3644:20;3635:29;;3673:32;3699:5;3673:32;:::i;:::-;3625:86;;;;:::o;3717:141::-;3773:5;3804:6;3798:13;3789:22;;3820:32;3846:5;3820:32;:::i;:::-;3779:79;;;;:::o;3877:338::-;3932:5;3981:3;3974:4;3966:6;3962:17;3958:27;3948:2;;3989:79;;:::i;:::-;3948:2;4106:6;4093:20;4131:78;4205:3;4197:6;4190:4;4182:6;4178:17;4131:78;:::i;:::-;4122:87;;3938:277;;;;;:::o;4235:553::-;4293:8;4303:6;4353:3;4346:4;4338:6;4334:17;4330:27;4320:2;;4361:79;;:::i;:::-;4320:2;4474:6;4461:20;4451:30;;4504:18;4496:6;4493:30;4490:2;;;4526:79;;:::i;:::-;4490:2;4640:4;4632:6;4628:17;4616:29;;4694:3;4686:4;4678:6;4674:17;4664:8;4660:32;4657:41;4654:2;;;4701:79;;:::i;:::-;4654:2;4310:478;;;;;:::o;4794:139::-;4840:5;4878:6;4865:20;4856:29;;4894:33;4921:5;4894:33;:::i;:::-;4846:87;;;;:::o;4939:137::-;4984:5;5022:6;5009:20;5000:29;;5038:32;5064:5;5038:32;:::i;:::-;4990:86;;;;:::o;5082:329::-;5141:6;5190:2;5178:9;5169:7;5165:23;5161:32;5158:2;;;5196:79;;:::i;:::-;5158:2;5316:1;5341:53;5386:7;5377:6;5366:9;5362:22;5341:53;:::i;:::-;5331:63;;5287:117;5148:263;;;;:::o;5417:474::-;5485:6;5493;5542:2;5530:9;5521:7;5517:23;5513:32;5510:2;;;5548:79;;:::i;:::-;5510:2;5668:1;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5639:117;5795:2;5821:53;5866:7;5857:6;5846:9;5842:22;5821:53;:::i;:::-;5811:63;;5766:118;5500:391;;;;;:::o;5897:1509::-;6051:6;6059;6067;6075;6083;6132:3;6120:9;6111:7;6107:23;6103:33;6100:2;;;6139:79;;:::i;:::-;6100:2;6259:1;6284:53;6329:7;6320:6;6309:9;6305:22;6284:53;:::i;:::-;6274:63;;6230:117;6386:2;6412:53;6457:7;6448:6;6437:9;6433:22;6412:53;:::i;:::-;6402:63;;6357:118;6542:2;6531:9;6527:18;6514:32;6573:18;6565:6;6562:30;6559:2;;;6595:79;;:::i;:::-;6559:2;6700:78;6770:7;6761:6;6750:9;6746:22;6700:78;:::i;:::-;6690:88;;6485:303;6855:2;6844:9;6840:18;6827:32;6886:18;6878:6;6875:30;6872:2;;;6908:79;;:::i;:::-;6872:2;7013:78;7083:7;7074:6;7063:9;7059:22;7013:78;:::i;:::-;7003:88;;6798:303;7168:3;7157:9;7153:19;7140:33;7200:18;7192:6;7189:30;7186:2;;;7222:79;;:::i;:::-;7186:2;7327:62;7381:7;7372:6;7361:9;7357:22;7327:62;:::i;:::-;7317:72;;7111:288;6090:1316;;;;;;;;:::o;7412:1089::-;7516:6;7524;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:2;;;7604:79;;:::i;:::-;7565:2;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;8263:3;8252:9;8248:19;8235:33;8295:18;8287:6;8284:30;8281:2;;;8317:79;;:::i;:::-;8281:2;8422:62;8476:7;8467:6;8456:9;8452:22;8422:62;:::i;:::-;8412:72;;8206:288;7555:946;;;;;;;;:::o;8507:468::-;8572:6;8580;8629:2;8617:9;8608:7;8604:23;8600:32;8597:2;;;8635:79;;:::i;:::-;8597:2;8755:1;8780:53;8825:7;8816:6;8805:9;8801:22;8780:53;:::i;:::-;8770:63;;8726:117;8882:2;8908:50;8950:7;8941:6;8930:9;8926:22;8908:50;:::i;:::-;8898:60;;8853:115;8587:388;;;;;:::o;8981:474::-;9049:6;9057;9106:2;9094:9;9085:7;9081:23;9077:32;9074:2;;;9112:79;;:::i;:::-;9074:2;9232:1;9257:53;9302:7;9293:6;9282:9;9278:22;9257:53;:::i;:::-;9247:63;;9203:117;9359:2;9385:53;9430:7;9421:6;9410:9;9406:22;9385:53;:::i;:::-;9375:63;;9330:118;9064:391;;;;;:::o;9461:1049::-;9577:6;9585;9593;9601;9609;9658:2;9646:9;9637:7;9633:23;9629:32;9626:2;;;9664:79;;:::i;:::-;9626:2;9812:1;9801:9;9797:17;9784:31;9842:18;9834:6;9831:30;9828:2;;;9864:79;;:::i;:::-;9828:2;9977:80;10049:7;10040:6;10029:9;10025:22;9977:80;:::i;:::-;9959:98;;;;9755:312;10134:2;10123:9;10119:18;10106:32;10165:18;10157:6;10154:30;10151:2;;;10187:79;;:::i;:::-;10151:2;10300:65;10357:7;10348:6;10337:9;10333:22;10300:65;:::i;:::-;10282:83;;;;10077:298;10414:2;10440:53;10485:7;10476:6;10465:9;10461:22;10440:53;:::i;:::-;10430:63;;10385:118;9616:894;;;;;;;;:::o;10516:::-;10634:6;10642;10691:2;10679:9;10670:7;10666:23;10662:32;10659:2;;;10697:79;;:::i;:::-;10659:2;10845:1;10834:9;10830:17;10817:31;10875:18;10867:6;10864:30;10861:2;;;10897:79;;:::i;:::-;10861:2;11002:78;11072:7;11063:6;11052:9;11048:22;11002:78;:::i;:::-;10992:88;;10788:302;11157:2;11146:9;11142:18;11129:32;11188:18;11180:6;11177:30;11174:2;;;11210:79;;:::i;:::-;11174:2;11315:78;11385:7;11376:6;11365:9;11361:22;11315:78;:::i;:::-;11305:88;;11100:303;10649:761;;;;;:::o;11416:327::-;11474:6;11523:2;11511:9;11502:7;11498:23;11494:32;11491:2;;;11529:79;;:::i;:::-;11491:2;11649:1;11674:52;11718:7;11709:6;11698:9;11694:22;11674:52;:::i;:::-;11664:62;;11620:116;11481:262;;;;:::o;11749:349::-;11818:6;11867:2;11855:9;11846:7;11842:23;11838:32;11835:2;;;11873:79;;:::i;:::-;11835:2;11993:1;12018:63;12073:7;12064:6;12053:9;12049:22;12018:63;:::i;:::-;12008:73;;11964:127;11825:273;;;;:::o;12104:672::-;12183:6;12191;12199;12248:2;12236:9;12227:7;12223:23;12219:32;12216:2;;;12254:79;;:::i;:::-;12216:2;12402:1;12391:9;12387:17;12374:31;12432:18;12424:6;12421:30;12418:2;;;12454:79;;:::i;:::-;12418:2;12567:65;12624:7;12615:6;12604:9;12600:22;12567:65;:::i;:::-;12549:83;;;;12345:297;12681:2;12707:52;12751:7;12742:6;12731:9;12727:22;12707:52;:::i;:::-;12697:62;;12652:117;12206:570;;;;;:::o;12782:329::-;12841:6;12890:2;12878:9;12869:7;12865:23;12861:32;12858:2;;;12896:79;;:::i;:::-;12858:2;13016:1;13041:53;13086:7;13077:6;13066:9;13062:22;13041:53;:::i;:::-;13031:63;;12987:117;12848:263;;;;:::o;13117:179::-;13186:10;13207:46;13249:3;13241:6;13207:46;:::i;:::-;13285:4;13280:3;13276:14;13262:28;;13197:99;;;;:::o;13302:118::-;13389:24;13407:5;13389:24;:::i;:::-;13384:3;13377:37;13367:53;;:::o;13456:732::-;13575:3;13604:54;13652:5;13604:54;:::i;:::-;13674:86;13753:6;13748:3;13674:86;:::i;:::-;13667:93;;13784:56;13834:5;13784:56;:::i;:::-;13863:7;13894:1;13879:284;13904:6;13901:1;13898:13;13879:284;;;13980:6;13974:13;14007:63;14066:3;14051:13;14007:63;:::i;:::-;14000:70;;14093:60;14146:6;14093:60;:::i;:::-;14083:70;;13939:224;13926:1;13923;13919:9;13914:14;;13879:284;;;13883:14;14179:3;14172:10;;13580:608;;;;;;;:::o;14194:109::-;14275:21;14290:5;14275:21;:::i;:::-;14270:3;14263:34;14253:50;;:::o;14309:360::-;14395:3;14423:38;14455:5;14423:38;:::i;:::-;14477:70;14540:6;14535:3;14477:70;:::i;:::-;14470:77;;14556:52;14601:6;14596:3;14589:4;14582:5;14578:16;14556:52;:::i;:::-;14633:29;14655:6;14633:29;:::i;:::-;14628:3;14624:39;14617:46;;14399:270;;;;;:::o;14675:364::-;14763:3;14791:39;14824:5;14791:39;:::i;:::-;14846:71;14910:6;14905:3;14846:71;:::i;:::-;14839:78;;14926:52;14971:6;14966:3;14959:4;14952:5;14948:16;14926:52;:::i;:::-;15003:29;15025:6;15003:29;:::i;:::-;14998:3;14994:39;14987:46;;14767:272;;;;;:::o;15045:366::-;15187:3;15208:67;15272:2;15267:3;15208:67;:::i;:::-;15201:74;;15284:93;15373:3;15284:93;:::i;:::-;15402:2;15397:3;15393:12;15386:19;;15191:220;;;:::o;15417:366::-;15559:3;15580:67;15644:2;15639:3;15580:67;:::i;:::-;15573:74;;15656:93;15745:3;15656:93;:::i;:::-;15774:2;15769:3;15765:12;15758:19;;15563:220;;;:::o;15789:366::-;15931:3;15952:67;16016:2;16011:3;15952:67;:::i;:::-;15945:74;;16028:93;16117:3;16028:93;:::i;:::-;16146:2;16141:3;16137:12;16130:19;;15935:220;;;:::o;16161:366::-;16303:3;16324:67;16388:2;16383:3;16324:67;:::i;:::-;16317:74;;16400:93;16489:3;16400:93;:::i;:::-;16518:2;16513:3;16509:12;16502:19;;16307:220;;;:::o;16533:366::-;16675:3;16696:67;16760:2;16755:3;16696:67;:::i;:::-;16689:74;;16772:93;16861:3;16772:93;:::i;:::-;16890:2;16885:3;16881:12;16874:19;;16679:220;;;:::o;16905:366::-;17047:3;17068:67;17132:2;17127:3;17068:67;:::i;:::-;17061:74;;17144:93;17233:3;17144:93;:::i;:::-;17262:2;17257:3;17253:12;17246:19;;17051:220;;;:::o;17277:366::-;17419:3;17440:67;17504:2;17499:3;17440:67;:::i;:::-;17433:74;;17516:93;17605:3;17516:93;:::i;:::-;17634:2;17629:3;17625:12;17618:19;;17423:220;;;:::o;17649:366::-;17791:3;17812:67;17876:2;17871:3;17812:67;:::i;:::-;17805:74;;17888:93;17977:3;17888:93;:::i;:::-;18006:2;18001:3;17997:12;17990:19;;17795:220;;;:::o;18021:366::-;18163:3;18184:67;18248:2;18243:3;18184:67;:::i;:::-;18177:74;;18260:93;18349:3;18260:93;:::i;:::-;18378:2;18373:3;18369:12;18362:19;;18167:220;;;:::o;18393:366::-;18535:3;18556:67;18620:2;18615:3;18556:67;:::i;:::-;18549:74;;18632:93;18721:3;18632:93;:::i;:::-;18750:2;18745:3;18741:12;18734:19;;18539:220;;;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18911:220;;;:::o;19137:366::-;19279:3;19300:67;19364:2;19359:3;19300:67;:::i;:::-;19293:74;;19376:93;19465:3;19376:93;:::i;:::-;19494:2;19489:3;19485:12;19478:19;;19283:220;;;:::o;19509:366::-;19651:3;19672:67;19736:2;19731:3;19672:67;:::i;:::-;19665:74;;19748:93;19837:3;19748:93;:::i;:::-;19866:2;19861:3;19857:12;19850:19;;19655:220;;;:::o;19881:108::-;19958:24;19976:5;19958:24;:::i;:::-;19953:3;19946:37;19936:53;;:::o;19995:118::-;20082:24;20100:5;20082:24;:::i;:::-;20077:3;20070:37;20060:53;;:::o;20119:222::-;20212:4;20250:2;20239:9;20235:18;20227:26;;20263:71;20331:1;20320:9;20316:17;20307:6;20263:71;:::i;:::-;20217:124;;;;:::o;20347:1053::-;20670:4;20708:3;20697:9;20693:19;20685:27;;20722:71;20790:1;20779:9;20775:17;20766:6;20722:71;:::i;:::-;20803:72;20871:2;20860:9;20856:18;20847:6;20803:72;:::i;:::-;20922:9;20916:4;20912:20;20907:2;20896:9;20892:18;20885:48;20950:108;21053:4;21044:6;20950:108;:::i;:::-;20942:116;;21105:9;21099:4;21095:20;21090:2;21079:9;21075:18;21068:48;21133:108;21236:4;21227:6;21133:108;:::i;:::-;21125:116;;21289:9;21283:4;21279:20;21273:3;21262:9;21258:19;21251:49;21317:76;21388:4;21379:6;21317:76;:::i;:::-;21309:84;;20675:725;;;;;;;;:::o;21406:751::-;21629:4;21667:3;21656:9;21652:19;21644:27;;21681:71;21749:1;21738:9;21734:17;21725:6;21681:71;:::i;:::-;21762:72;21830:2;21819:9;21815:18;21806:6;21762:72;:::i;:::-;21844;21912:2;21901:9;21897:18;21888:6;21844:72;:::i;:::-;21926;21994:2;21983:9;21979:18;21970:6;21926:72;:::i;:::-;22046:9;22040:4;22036:20;22030:3;22019:9;22015:19;22008:49;22074:76;22145:4;22136:6;22074:76;:::i;:::-;22066:84;;21634:523;;;;;;;;:::o;22163:373::-;22306:4;22344:2;22333:9;22329:18;22321:26;;22393:9;22387:4;22383:20;22379:1;22368:9;22364:17;22357:47;22421:108;22524:4;22515:6;22421:108;:::i;:::-;22413:116;;22311:225;;;;:::o;22542:634::-;22763:4;22801:2;22790:9;22786:18;22778:26;;22850:9;22844:4;22840:20;22836:1;22825:9;22821:17;22814:47;22878:108;22981:4;22972:6;22878:108;:::i;:::-;22870:116;;23033:9;23027:4;23023:20;23018:2;23007:9;23003:18;22996:48;23061:108;23164:4;23155:6;23061:108;:::i;:::-;23053:116;;22768:408;;;;;:::o;23182:210::-;23269:4;23307:2;23296:9;23292:18;23284:26;;23320:65;23382:1;23371:9;23367:17;23358:6;23320:65;:::i;:::-;23274:118;;;;:::o;23398:313::-;23511:4;23549:2;23538:9;23534:18;23526:26;;23598:9;23592:4;23588:20;23584:1;23573:9;23569:17;23562:47;23626:78;23699:4;23690:6;23626:78;:::i;:::-;23618:86;;23516:195;;;;:::o;23717:419::-;23883:4;23921:2;23910:9;23906:18;23898:26;;23970:9;23964:4;23960:20;23956:1;23945:9;23941:17;23934:47;23998:131;24124:4;23998:131;:::i;:::-;23990:139;;23888:248;;;:::o;24142:419::-;24308:4;24346:2;24335:9;24331:18;24323:26;;24395:9;24389:4;24385:20;24381:1;24370:9;24366:17;24359:47;24423:131;24549:4;24423:131;:::i;:::-;24415:139;;24313:248;;;:::o;24567:419::-;24733:4;24771:2;24760:9;24756:18;24748:26;;24820:9;24814:4;24810:20;24806:1;24795:9;24791:17;24784:47;24848:131;24974:4;24848:131;:::i;:::-;24840:139;;24738:248;;;:::o;24992:419::-;25158:4;25196:2;25185:9;25181:18;25173:26;;25245:9;25239:4;25235:20;25231:1;25220:9;25216:17;25209:47;25273:131;25399:4;25273:131;:::i;:::-;25265:139;;25163:248;;;:::o;25417:419::-;25583:4;25621:2;25610:9;25606:18;25598:26;;25670:9;25664:4;25660:20;25656:1;25645:9;25641:17;25634:47;25698:131;25824:4;25698:131;:::i;:::-;25690:139;;25588:248;;;:::o;25842:419::-;26008:4;26046:2;26035:9;26031:18;26023:26;;26095:9;26089:4;26085:20;26081:1;26070:9;26066:17;26059:47;26123:131;26249:4;26123:131;:::i;:::-;26115:139;;26013:248;;;:::o;26267:419::-;26433:4;26471:2;26460:9;26456:18;26448:26;;26520:9;26514:4;26510:20;26506:1;26495:9;26491:17;26484:47;26548:131;26674:4;26548:131;:::i;:::-;26540:139;;26438:248;;;:::o;26692:419::-;26858:4;26896:2;26885:9;26881:18;26873:26;;26945:9;26939:4;26935:20;26931:1;26920:9;26916:17;26909:47;26973:131;27099:4;26973:131;:::i;:::-;26965:139;;26863:248;;;:::o;27117:419::-;27283:4;27321:2;27310:9;27306:18;27298:26;;27370:9;27364:4;27360:20;27356:1;27345:9;27341:17;27334:47;27398:131;27524:4;27398:131;:::i;:::-;27390:139;;27288:248;;;:::o;27542:419::-;27708:4;27746:2;27735:9;27731:18;27723:26;;27795:9;27789:4;27785:20;27781:1;27770:9;27766:17;27759:47;27823:131;27949:4;27823:131;:::i;:::-;27815:139;;27713:248;;;:::o;27967:419::-;28133:4;28171:2;28160:9;28156:18;28148:26;;28220:9;28214:4;28210:20;28206:1;28195:9;28191:17;28184:47;28248:131;28374:4;28248:131;:::i;:::-;28240:139;;28138:248;;;:::o;28392:419::-;28558:4;28596:2;28585:9;28581:18;28573:26;;28645:9;28639:4;28635:20;28631:1;28620:9;28616:17;28609:47;28673:131;28799:4;28673:131;:::i;:::-;28665:139;;28563:248;;;:::o;28817:419::-;28983:4;29021:2;29010:9;29006:18;28998:26;;29070:9;29064:4;29060:20;29056:1;29045:9;29041:17;29034:47;29098:131;29224:4;29098:131;:::i;:::-;29090:139;;28988:248;;;:::o;29242:222::-;29335:4;29373:2;29362:9;29358:18;29350:26;;29386:71;29454:1;29443:9;29439:17;29430:6;29386:71;:::i;:::-;29340:124;;;;:::o;29470:332::-;29591:4;29629:2;29618:9;29614:18;29606:26;;29642:71;29710:1;29699:9;29695:17;29686:6;29642:71;:::i;:::-;29723:72;29791:2;29780:9;29776:18;29767:6;29723:72;:::i;:::-;29596:206;;;;;:::o;29808:129::-;29842:6;29869:20;;:::i;:::-;29859:30;;29898:33;29926:4;29918:6;29898:33;:::i;:::-;29849:88;;;:::o;29943:75::-;29976:6;30009:2;30003:9;29993:19;;29983:35;:::o;30024:311::-;30101:4;30191:18;30183:6;30180:30;30177:2;;;30213:18;;:::i;:::-;30177:2;30263:4;30255:6;30251:17;30243:25;;30323:4;30317;30313:15;30305:23;;30106:229;;;:::o;30341:311::-;30418:4;30508:18;30500:6;30497:30;30494:2;;;30530:18;;:::i;:::-;30494:2;30580:4;30572:6;30568:17;30560:25;;30640:4;30634;30630:15;30622:23;;30423:229;;;:::o;30658:307::-;30719:4;30809:18;30801:6;30798:30;30795:2;;;30831:18;;:::i;:::-;30795:2;30869:29;30891:6;30869:29;:::i;:::-;30861:37;;30953:4;30947;30943:15;30935:23;;30724:241;;;:::o;30971:132::-;31038:4;31061:3;31053:11;;31091:4;31086:3;31082:14;31074:22;;31043:60;;;:::o;31109:114::-;31176:6;31210:5;31204:12;31194:22;;31183:40;;;:::o;31229:98::-;31280:6;31314:5;31308:12;31298:22;;31287:40;;;:::o;31333:99::-;31385:6;31419:5;31413:12;31403:22;;31392:40;;;:::o;31438:113::-;31508:4;31540;31535:3;31531:14;31523:22;;31513:38;;;:::o;31557:184::-;31656:11;31690:6;31685:3;31678:19;31730:4;31725:3;31721:14;31706:29;;31668:73;;;;:::o;31747:168::-;31830:11;31864:6;31859:3;31852:19;31904:4;31899:3;31895:14;31880:29;;31842:73;;;;:::o;31921:169::-;32005:11;32039:6;32034:3;32027:19;32079:4;32074:3;32070:14;32055:29;;32017:73;;;;:::o;32096:305::-;32136:3;32155:20;32173:1;32155:20;:::i;:::-;32150:25;;32189:20;32207:1;32189:20;:::i;:::-;32184:25;;32343:1;32275:66;32271:74;32268:1;32265:81;32262:2;;;32349:18;;:::i;:::-;32262:2;32393:1;32390;32386:9;32379:16;;32140:261;;;;:::o;32407:96::-;32444:7;32473:24;32491:5;32473:24;:::i;:::-;32462:35;;32452:51;;;:::o;32509:90::-;32543:7;32586:5;32579:13;32572:21;32561:32;;32551:48;;;:::o;32605:149::-;32641:7;32681:66;32674:5;32670:78;32659:89;;32649:105;;;:::o;32760:126::-;32797:7;32837:42;32830:5;32826:54;32815:65;;32805:81;;;:::o;32892:77::-;32929:7;32958:5;32947:16;;32937:32;;;:::o;32975:93::-;33011:7;33051:10;33044:5;33040:22;33029:33;;33019:49;;;:::o;33074:154::-;33158:6;33153:3;33148;33135:30;33220:1;33211:6;33206:3;33202:16;33195:27;33125:103;;;:::o;33234:307::-;33302:1;33312:113;33326:6;33323:1;33320:13;33312:113;;;33411:1;33406:3;33402:11;33396:18;33392:1;33387:3;33383:11;33376:39;33348:2;33345:1;33341:10;33336:15;;33312:113;;;33443:6;33440:1;33437:13;33434:2;;;33523:1;33514:6;33509:3;33505:16;33498:27;33434:2;33283:258;;;;:::o;33547:320::-;33591:6;33628:1;33622:4;33618:12;33608:22;;33675:1;33669:4;33665:12;33696:18;33686:2;;33752:4;33744:6;33740:17;33730:27;;33686:2;33814;33806:6;33803:14;33783:18;33780:38;33777:2;;;33833:18;;:::i;:::-;33777:2;33598:269;;;;:::o;33873:281::-;33956:27;33978:4;33956:27;:::i;:::-;33948:6;33944:40;34086:6;34074:10;34071:22;34050:18;34038:10;34035:34;34032:62;34029:2;;;34097:18;;:::i;:::-;34029:2;34137:10;34133:2;34126:22;33916:238;;;:::o;34160:233::-;34199:3;34222:24;34240:5;34222:24;:::i;:::-;34213:33;;34268:66;34261:5;34258:77;34255:2;;;34338:18;;:::i;:::-;34255:2;34385:1;34378:5;34374:13;34367:20;;34203:190;;;:::o;34399:180::-;34447:77;34444:1;34437:88;34544:4;34541:1;34534:15;34568:4;34565:1;34558:15;34585:180;34633:77;34630:1;34623:88;34730:4;34727:1;34720:15;34754:4;34751:1;34744:15;34771:180;34819:77;34816:1;34809:88;34916:4;34913:1;34906:15;34940:4;34937:1;34930:15;34957:180;35005:77;35002:1;34995:88;35102:4;35099:1;35092:15;35126:4;35123:1;35116:15;35143:183;35178:3;35216:1;35198:16;35195:23;35192:2;;;35254:1;35251;35248;35233:23;35276:34;35307:1;35301:8;35276:34;:::i;:::-;35269:41;;35192:2;35182:144;:::o;35332:117::-;35441:1;35438;35431:12;35455:117;35564:1;35561;35554:12;35578:117;35687:1;35684;35677:12;35701:117;35810:1;35807;35800:12;35824:117;35933:1;35930;35923:12;35947:117;36056:1;36053;36046:12;36070:102;36111:6;36162:2;36158:7;36153:2;36146:5;36142:14;36138:28;36128:38;;36118:54;;;:::o;36178:106::-;36222:8;36271:5;36266:3;36262:15;36241:36;;36231:53;;;:::o;36290:239::-;36430:34;36426:1;36418:6;36414:14;36407:58;36499:22;36494:2;36486:6;36482:15;36475:47;36396:133;:::o;36535:227::-;36675:34;36671:1;36663:6;36659:14;36652:58;36744:10;36739:2;36731:6;36727:15;36720:35;36641:121;:::o;36768:230::-;36908:34;36904:1;36896:6;36892:14;36885:58;36977:13;36972:2;36964:6;36960:15;36953:38;36874:124;:::o;37004:225::-;37144:34;37140:1;37132:6;37128:14;37121:58;37213:8;37208:2;37200:6;37196:15;37189:33;37110:119;:::o;37235:228::-;37375:34;37371:1;37363:6;37359:14;37352:58;37444:11;37439:2;37431:6;37427:15;37420:36;37341:122;:::o;37469:224::-;37609:34;37605:1;37597:6;37593:14;37586:58;37678:7;37673:2;37665:6;37661:15;37654:32;37575:118;:::o;37699:237::-;37839:34;37835:1;37827:6;37823:14;37816:58;37908:20;37903:2;37895:6;37891:15;37884:45;37805:131;:::o;37942:229::-;38082:34;38078:1;38070:6;38066:14;38059:58;38151:12;38146:2;38138:6;38134:15;38127:37;38048:123;:::o;38177:182::-;38317:34;38313:1;38305:6;38301:14;38294:58;38283:76;:::o;38365:228::-;38505:34;38501:1;38493:6;38489:14;38482:58;38574:11;38569:2;38561:6;38557:15;38550:36;38471:122;:::o;38599:228::-;38739:34;38735:1;38727:6;38723:14;38716:58;38808:11;38803:2;38795:6;38791:15;38784:36;38705:122;:::o;38833:227::-;38973:34;38969:1;38961:6;38957:14;38950:58;39042:10;39037:2;39029:6;39025:15;39018:35;38939:121;:::o;39066:220::-;39206:34;39202:1;39194:6;39190:14;39183:58;39275:3;39270:2;39262:6;39258:15;39251:28;39172:114;:::o;39292:711::-;39331:3;39369:4;39351:16;39348:26;39345:2;;;39377:5;;39345:2;39406:20;;:::i;:::-;39481:1;39463:16;39459:24;39456:1;39450:4;39435:49;39514:4;39508:11;39613:16;39606:4;39598:6;39594:17;39591:39;39558:18;39550:6;39547:30;39531:113;39528:2;;;39659:5;;;;39528:2;39705:6;39699:4;39695:17;39741:3;39735:10;39768:18;39760:6;39757:30;39754:2;;;39790:5;;;;;;39754:2;39838:6;39831:4;39826:3;39822:14;39818:27;39897:1;39879:16;39875:24;39869:4;39865:35;39860:3;39857:44;39854:2;;;39904:5;;;;;;;39854:2;39921:57;39969:6;39963:4;39959:17;39951:6;39947:30;39941:4;39921:57;:::i;:::-;39994:3;39987:10;;39335:668;;;;;;;:::o;40009:122::-;40082:24;40100:5;40082:24;:::i;:::-;40075:5;40072:35;40062:2;;40121:1;40118;40111:12;40062:2;40052:79;:::o;40137:116::-;40207:21;40222:5;40207:21;:::i;:::-;40200:5;40197:32;40187:2;;40243:1;40240;40233:12;40187:2;40177:76;:::o;40259:120::-;40331:23;40348:5;40331:23;:::i;:::-;40324:5;40321:34;40311:2;;40369:1;40366;40359:12;40311:2;40301:78;:::o;40385:122::-;40458:24;40476:5;40458:24;:::i;:::-;40451:5;40448:35;40438:2;;40497:1;40494;40487:12;40438:2;40428:79;:::o;40513:120::-;40585:23;40602:5;40585:23;:::i;:::-;40578:5;40575:34;40565:2;;40623:1;40620;40613:12;40565:2;40555:78;:::o

Swarm Source

ipfs://b3938515a879ab46f9d5fdc01398225b9d3b2f1872a5c346ac6700d7b975899c
Loading