Token
ERC-1155
Overview
Max Total Supply
0
Holders
4
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
MintNest
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at mumbai.polygonscan.com on 2021-12-05 */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (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 // OpenZeppelin Contracts v4.4.0 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.0 (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: @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol // OpenZeppelin Contracts v4.4.0 (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.0; /** * @dev Extension of ERC1155 that adds tracking of total supply per id. * * Useful for scenarios where Fungible and Non-fungible tokens have to be * clearly identified. Note: While a totalSupply of 1 might mean the * corresponding is an NFT, there is no guarantees that no other token with the * same id are not going to be minted. */ abstract contract ERC1155Supply is ERC1155 { mapping(uint256 => uint256) private _totalSupply; /** * @dev Total amount of tokens in with a given id. */ function totalSupply(uint256 id) public view virtual returns (uint256) { return _totalSupply[id]; } /** * @dev Indicates whether any token exist with a given id, or not. */ function exists(uint256 id) public view virtual returns (bool) { return ERC1155Supply.totalSupply(id) > 0; } /** * @dev See {ERC1155-_beforeTokenTransfer}. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual override { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); if (from == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] += amounts[i]; } } if (to == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] -= amounts[i]; } } } } // File: contracts/MintNestTest.sol pragma solidity ^0.8.0; contract MintNest is ERC1155Supply, Ownable { uint256 public cost = 100 ether; mapping(address => bool) public whitelisted; constructor( string memory uri, string memory _name, string memory _symbol ) public ERC1155(uri) {} function mint(address _to, uint256 _id, uint256 _mintAmount) public payable { require(_mintAmount > 0); if (msg.sender != owner()) { if(whitelisted[msg.sender] != true) { require(msg.value >= cost * _mintAmount); } } _mint(_to, _id, _mintAmount, ""); } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function burn(address _account, uint256 _id, uint256 _amount) public onlyOwner { _burn(_account, _id, _amount); } function setURI(string memory newuri) public onlyOwner { _setURI(newuri); } function whitelistUser(address _user) public onlyOwner { whitelisted[_user] = true; } function removeWhitelistUser(address _user) public onlyOwner { whitelisted[_user] = false; } function withdraw() public payable onlyOwner { require(payable(msg.sender).send(address(this).balance)); } }
[{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"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":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeWhitelistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newuri","type":"string"}],"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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"whitelistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405268056bc75e2d631000006005553480156200001e57600080fd5b506040516200403f3803806200403f833981810160405281019062000044919062000298565b8262000056816200008060201b60201c565b50620000776200006b6200009c60201b60201c565b620000a460201b60201c565b505050620004d5565b8060029080519060200190620000989291906200016a565b5050565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200017890620003e6565b90600052602060002090601f0160209004810192826200019c5760008555620001e8565b82601f10620001b757805160ff1916838001178555620001e8565b82800160010185558215620001e8579182015b82811115620001e7578251825591602001919060010190620001ca565b5b509050620001f79190620001fb565b5090565b5b8082111562000216576000816000905550600101620001fc565b5090565b6000620002316200022b846200037a565b62000351565b90508281526020810184848401111562000250576200024f620004b5565b5b6200025d848285620003b0565b509392505050565b600082601f8301126200027d576200027c620004b0565b5b81516200028f8482602086016200021a565b91505092915050565b600080600060608486031215620002b457620002b3620004bf565b5b600084015167ffffffffffffffff811115620002d557620002d4620004ba565b5b620002e38682870162000265565b935050602084015167ffffffffffffffff811115620003075762000306620004ba565b5b620003158682870162000265565b925050604084015167ffffffffffffffff811115620003395762000338620004ba565b5b620003478682870162000265565b9150509250925092565b60006200035d62000370565b90506200036b82826200041c565b919050565b6000604051905090565b600067ffffffffffffffff82111562000398576200039762000481565b5b620003a382620004c4565b9050602081019050919050565b60005b83811015620003d0578082015181840152602081019050620003b3565b83811115620003e0576000848401525b50505050565b60006002820490506001821680620003ff57607f821691505b6020821081141562000416576200041562000452565b5b50919050565b6200042782620004c4565b810181811067ffffffffffffffff8211171562000449576200044862000481565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b613b5a80620004e56000396000f3fe6080604052600436106101345760003560e01c80634e1273f4116100ab578063bd85b0391161006f578063bd85b039146103f3578063d936547e14610430578063e985e9c51461046d578063f242432a146104aa578063f2fde38b146104d3578063f5298aca146104fc57610134565b80634e1273f41461030e5780634f558e791461034b578063715018a6146103885780638da5cb5b1461039f578063a22cb465146103ca57610134565b8063156e29f6116100fd578063156e29f6146102445780632eb2c2d61461026057806330cc7ae0146102895780633ccfd60b146102b257806344a0d68a146102bc5780634a4c560d146102e557610134565b8062fdd58e1461013957806301ffc9a71461017657806302fe5305146101b35780630e89341c146101dc57806313faede614610219575b600080fd5b34801561014557600080fd5b50610160600480360381019061015b9190612869565b610525565b60405161016d91906130c8565b60405180910390f35b34801561018257600080fd5b5061019d60048036038101906101989190612974565b6105ee565b6040516101aa9190612eab565b60405180910390f35b3480156101bf57600080fd5b506101da60048036038101906101d591906129ce565b6106d0565b005b3480156101e857600080fd5b5061020360048036038101906101fe9190612a17565b610758565b6040516102109190612ec6565b60405180910390f35b34801561022557600080fd5b5061022e6107ec565b60405161023b91906130c8565b60405180910390f35b61025e600480360381019061025991906128a9565b6107f2565b005b34801561026c57600080fd5b50610287600480360381019061028291906126c3565b6108cd565b005b34801561029557600080fd5b506102b060048036038101906102ab9190612656565b61096e565b005b6102ba610a45565b005b3480156102c857600080fd5b506102e360048036038101906102de9190612a17565b610b01565b005b3480156102f157600080fd5b5061030c60048036038101906103079190612656565b610b87565b005b34801561031a57600080fd5b50610335600480360381019061033091906128fc565b610c5e565b6040516103429190612e52565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d9190612a17565b610d77565b60405161037f9190612eab565b60405180910390f35b34801561039457600080fd5b5061039d610d8b565b005b3480156103ab57600080fd5b506103b4610e13565b6040516103c19190612d75565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612829565b610e3d565b005b3480156103ff57600080fd5b5061041a60048036038101906104159190612a17565b610e53565b60405161042791906130c8565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190612656565b610e70565b6040516104649190612eab565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612683565b610e90565b6040516104a19190612eab565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612792565b610f24565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190612656565b610fc5565b005b34801561050857600080fd5b50610523600480360381019061051e91906128a9565b6110bd565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d90612f28565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106b957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106c957506106c882611149565b5b9050919050565b6106d86111b3565b73ffffffffffffffffffffffffffffffffffffffff166106f6610e13565b73ffffffffffffffffffffffffffffffffffffffff161461074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074390613028565b60405180910390fd5b610755816111bb565b50565b606060028054610767906133f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610793906133f6565b80156107e05780601f106107b5576101008083540402835291602001916107e0565b820191906000526020600020905b8154815290600101906020018083116107c357829003601f168201915b50505050509050919050565b60055481565b600081116107ff57600080fd5b610807610e13565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ad5760011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146108ac578060055461089f91906132b2565b3410156108ab57600080fd5b5b5b6108c8838383604051806020016040528060008152506111d5565b505050565b6108d56111b3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061091b575061091a856109156111b3565b610e90565b5b61095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190612fc8565b60405180910390fd5b610967858585858561136b565b5050505050565b6109766111b3565b73ffffffffffffffffffffffffffffffffffffffff16610994610e13565b73ffffffffffffffffffffffffffffffffffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613028565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a4d6111b3565b73ffffffffffffffffffffffffffffffffffffffff16610a6b610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890613028565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610aff57600080fd5b565b610b096111b3565b73ffffffffffffffffffffffffffffffffffffffff16610b27610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490613028565b60405180910390fd5b8060058190555050565b610b8f6111b3565b73ffffffffffffffffffffffffffffffffffffffff16610bad610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90613028565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60608151835114610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90613068565b60405180910390fd5b6000835167ffffffffffffffff811115610cc157610cc061352f565b5b604051908082528060200260200182016040528015610cef5781602001602082028036833780820191505090505b50905060005b8451811015610d6c57610d3c858281518110610d1457610d13613500565b5b6020026020010151858381518110610d2f57610d2e613500565b5b6020026020010151610525565b828281518110610d4f57610d4e613500565b5b60200260200101818152505080610d6590613459565b9050610cf5565b508091505092915050565b600080610d8383610e53565b119050919050565b610d936111b3565b73ffffffffffffffffffffffffffffffffffffffff16610db1610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe90613028565b60405180910390fd5b610e11600061167f565b565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e4f610e486111b3565b8383611745565b5050565b600060036000838152602001908152602001600020549050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f2c6111b3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610f725750610f7185610f6c6111b3565b610e90565b5b610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa890612f88565b60405180910390fd5b610fbe85858585856118b2565b5050505050565b610fcd6111b3565b73ffffffffffffffffffffffffffffffffffffffff16610feb610e13565b73ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890613028565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890612f48565b60405180910390fd5b6110ba8161167f565b50565b6110c56111b3565b73ffffffffffffffffffffffffffffffffffffffff166110e3610e13565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090613028565b60405180910390fd5b611144838383611b34565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b80600290805190602001906111d192919061232e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c906130a8565b60405180910390fd5b600061124f6111b3565b90506112708160008761126188611d51565b61126a88611d51565b87611dcb565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112cf919061325c565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161134d9291906130e3565b60405180910390a461136481600087878787611f45565b5050505050565b81518351146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613088565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612fa8565b60405180910390fd5b60006114296111b3565b9050611439818787878787611dcb565b60005b84518110156115ea57600085828151811061145a57611459613500565b5b60200260200101519050600085838151811061147957611478613500565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190613008565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115cf919061325c565b92505081905550505050806115e390613459565b905061143c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611661929190612e74565b60405180910390a461167781878787878761212c565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab90613048565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118a59190612eab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990612fa8565b60405180910390fd5b600061192c6111b3565b905061194c81878761193d88611d51565b61194688611d51565b87611dcb565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613008565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a98919061325c565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611b159291906130e3565b60405180910390a4611b2b828888888888611f45565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90612fe8565b60405180910390fd5b6000611bae6111b3565b9050611bde81856000611bc087611d51565b611bc987611d51565b60405180602001604052806000815250611dcb565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6c90612f68565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611d429291906130e3565b60405180910390a45050505050565b60606000600167ffffffffffffffff811115611d7057611d6f61352f565b5b604051908082528060200260200182016040528015611d9e5781602001602082028036833780820191505090505b5090508281600081518110611db657611db5613500565b5b60200260200101818152505080915050919050565b611dd9868686868686612313565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611e8b5760005b8351811015611e8957828181518110611e2d57611e2c613500565b5b602002602001015160036000868481518110611e4c57611e4b613500565b5b602002602001015181526020019081526020016000206000828254611e71919061325c565b9250508190555080611e8290613459565b9050611e11565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f3d5760005b8351811015611f3b57828181518110611edf57611ede613500565b5b602002602001015160036000868481518110611efe57611efd613500565b5b602002602001015181526020019081526020016000206000828254611f23919061330c565b9250508190555080611f3490613459565b9050611ec3565b505b505050505050565b611f648473ffffffffffffffffffffffffffffffffffffffff1661231b565b15612124578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611faa959493929190612df8565b602060405180830381600087803b158015611fc457600080fd5b505af1925050508015611ff557506040513d601f19601f82011682018060405250810190611ff291906129a1565b60015b61209b5761200161355e565b806308c379a0141561205e5750612016613a32565b806120215750612060565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120559190612ec6565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209290612ee8565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990612f08565b60405180910390fd5b505b505050505050565b61214b8473ffffffffffffffffffffffffffffffffffffffff1661231b565b1561230b578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612191959493929190612d90565b602060405180830381600087803b1580156121ab57600080fd5b505af19250505080156121dc57506040513d601f19601f820116820180604052508101906121d991906129a1565b60015b612282576121e861355e565b806308c379a0141561224557506121fd613a32565b806122085750612247565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c9190612ec6565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227990612ee8565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090612f08565b60405180910390fd5b505b505050505050565b505050505050565b600080823b905060008111915050919050565b82805461233a906133f6565b90600052602060002090601f01602090048101928261235c57600085556123a3565b82601f1061237557805160ff19168380011785556123a3565b828001600101855582156123a3579182015b828111156123a2578251825591602001919060010190612387565b5b5090506123b091906123b4565b5090565b5b808211156123cd5760008160009055506001016123b5565b5090565b60006123e46123df84613131565b61310c565b9050808382526020820190508285602086028201111561240757612406613585565b5b60005b85811015612437578161241d8882612535565b84526020840193506020830192505060018101905061240a565b5050509392505050565b600061245461244f8461315d565b61310c565b9050808382526020820190508285602086028201111561247757612476613585565b5b60005b858110156124a7578161248d8882612641565b84526020840193506020830192505060018101905061247a565b5050509392505050565b60006124c46124bf84613189565b61310c565b9050828152602081018484840111156124e0576124df61358a565b5b6124eb8482856133b4565b509392505050565b6000612506612501846131ba565b61310c565b9050828152602081018484840111156125225761252161358a565b5b61252d8482856133b4565b509392505050565b60008135905061254481613ac8565b92915050565b600082601f83011261255f5761255e613580565b5b813561256f8482602086016123d1565b91505092915050565b600082601f83011261258d5761258c613580565b5b813561259d848260208601612441565b91505092915050565b6000813590506125b581613adf565b92915050565b6000813590506125ca81613af6565b92915050565b6000815190506125df81613af6565b92915050565b600082601f8301126125fa576125f9613580565b5b813561260a8482602086016124b1565b91505092915050565b600082601f83011261262857612627613580565b5b81356126388482602086016124f3565b91505092915050565b60008135905061265081613b0d565b92915050565b60006020828403121561266c5761266b613594565b5b600061267a84828501612535565b91505092915050565b6000806040838503121561269a57612699613594565b5b60006126a885828601612535565b92505060206126b985828601612535565b9150509250929050565b600080600080600060a086880312156126df576126de613594565b5b60006126ed88828901612535565b95505060206126fe88828901612535565b945050604086013567ffffffffffffffff81111561271f5761271e61358f565b5b61272b88828901612578565b935050606086013567ffffffffffffffff81111561274c5761274b61358f565b5b61275888828901612578565b925050608086013567ffffffffffffffff8111156127795761277861358f565b5b612785888289016125e5565b9150509295509295909350565b600080600080600060a086880312156127ae576127ad613594565b5b60006127bc88828901612535565b95505060206127cd88828901612535565b94505060406127de88828901612641565b93505060606127ef88828901612641565b925050608086013567ffffffffffffffff8111156128105761280f61358f565b5b61281c888289016125e5565b9150509295509295909350565b600080604083850312156128405761283f613594565b5b600061284e85828601612535565b925050602061285f858286016125a6565b9150509250929050565b600080604083850312156128805761287f613594565b5b600061288e85828601612535565b925050602061289f85828601612641565b9150509250929050565b6000806000606084860312156128c2576128c1613594565b5b60006128d086828701612535565b93505060206128e186828701612641565b92505060406128f286828701612641565b9150509250925092565b6000806040838503121561291357612912613594565b5b600083013567ffffffffffffffff8111156129315761293061358f565b5b61293d8582860161254a565b925050602083013567ffffffffffffffff81111561295e5761295d61358f565b5b61296a85828601612578565b9150509250929050565b60006020828403121561298a57612989613594565b5b6000612998848285016125bb565b91505092915050565b6000602082840312156129b7576129b6613594565b5b60006129c5848285016125d0565b91505092915050565b6000602082840312156129e4576129e3613594565b5b600082013567ffffffffffffffff811115612a0257612a0161358f565b5b612a0e84828501612613565b91505092915050565b600060208284031215612a2d57612a2c613594565b5b6000612a3b84828501612641565b91505092915050565b6000612a508383612d57565b60208301905092915050565b612a6581613340565b82525050565b6000612a76826131fb565b612a808185613229565b9350612a8b836131eb565b8060005b83811015612abc578151612aa38882612a44565b9750612aae8361321c565b925050600181019050612a8f565b5085935050505092915050565b612ad281613352565b82525050565b6000612ae382613206565b612aed818561323a565b9350612afd8185602086016133c3565b612b0681613599565b840191505092915050565b6000612b1c82613211565b612b26818561324b565b9350612b368185602086016133c3565b612b3f81613599565b840191505092915050565b6000612b5760348361324b565b9150612b62826135b7565b604082019050919050565b6000612b7a60288361324b565b9150612b8582613606565b604082019050919050565b6000612b9d602b8361324b565b9150612ba882613655565b604082019050919050565b6000612bc060268361324b565b9150612bcb826136a4565b604082019050919050565b6000612be360248361324b565b9150612bee826136f3565b604082019050919050565b6000612c0660298361324b565b9150612c1182613742565b604082019050919050565b6000612c2960258361324b565b9150612c3482613791565b604082019050919050565b6000612c4c60328361324b565b9150612c57826137e0565b604082019050919050565b6000612c6f60238361324b565b9150612c7a8261382f565b604082019050919050565b6000612c92602a8361324b565b9150612c9d8261387e565b604082019050919050565b6000612cb560208361324b565b9150612cc0826138cd565b602082019050919050565b6000612cd860298361324b565b9150612ce3826138f6565b604082019050919050565b6000612cfb60298361324b565b9150612d0682613945565b604082019050919050565b6000612d1e60288361324b565b9150612d2982613994565b604082019050919050565b6000612d4160218361324b565b9150612d4c826139e3565b604082019050919050565b612d60816133aa565b82525050565b612d6f816133aa565b82525050565b6000602082019050612d8a6000830184612a5c565b92915050565b600060a082019050612da56000830188612a5c565b612db26020830187612a5c565b8181036040830152612dc48186612a6b565b90508181036060830152612dd88185612a6b565b90508181036080830152612dec8184612ad8565b90509695505050505050565b600060a082019050612e0d6000830188612a5c565b612e1a6020830187612a5c565b612e276040830186612d66565b612e346060830185612d66565b8181036080830152612e468184612ad8565b90509695505050505050565b60006020820190508181036000830152612e6c8184612a6b565b905092915050565b60006040820190508181036000830152612e8e8185612a6b565b90508181036020830152612ea28184612a6b565b90509392505050565b6000602082019050612ec06000830184612ac9565b92915050565b60006020820190508181036000830152612ee08184612b11565b905092915050565b60006020820190508181036000830152612f0181612b4a565b9050919050565b60006020820190508181036000830152612f2181612b6d565b9050919050565b60006020820190508181036000830152612f4181612b90565b9050919050565b60006020820190508181036000830152612f6181612bb3565b9050919050565b60006020820190508181036000830152612f8181612bd6565b9050919050565b60006020820190508181036000830152612fa181612bf9565b9050919050565b60006020820190508181036000830152612fc181612c1c565b9050919050565b60006020820190508181036000830152612fe181612c3f565b9050919050565b6000602082019050818103600083015261300181612c62565b9050919050565b6000602082019050818103600083015261302181612c85565b9050919050565b6000602082019050818103600083015261304181612ca8565b9050919050565b6000602082019050818103600083015261306181612ccb565b9050919050565b6000602082019050818103600083015261308181612cee565b9050919050565b600060208201905081810360008301526130a181612d11565b9050919050565b600060208201905081810360008301526130c181612d34565b9050919050565b60006020820190506130dd6000830184612d66565b92915050565b60006040820190506130f86000830185612d66565b6131056020830184612d66565b9392505050565b6000613116613127565b90506131228282613428565b919050565b6000604051905090565b600067ffffffffffffffff82111561314c5761314b61352f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156131785761317761352f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156131a4576131a361352f565b5b6131ad82613599565b9050602081019050919050565b600067ffffffffffffffff8211156131d5576131d461352f565b5b6131de82613599565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613267826133aa565b9150613272836133aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132a7576132a66134a2565b5b828201905092915050565b60006132bd826133aa565b91506132c8836133aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613301576133006134a2565b5b828202905092915050565b6000613317826133aa565b9150613322836133aa565b925082821015613335576133346134a2565b5b828203905092915050565b600061334b8261338a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156133e15780820151818401526020810190506133c6565b838111156133f0576000848401525b50505050565b6000600282049050600182168061340e57607f821691505b60208210811415613422576134216134d1565b5b50919050565b61343182613599565b810181811067ffffffffffffffff821117156134505761344f61352f565b5b80604052505050565b6000613464826133aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613497576134966134a2565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561357d5760046000803e61357a6000516135aa565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613a4257613ac5565b613a4a613127565b60043d036004823e80513d602482011167ffffffffffffffff82111715613a72575050613ac5565b808201805167ffffffffffffffff811115613a905750505050613ac5565b80602083010160043d038501811115613aad575050505050613ac5565b613abc82602001850186613428565b82955050505050505b90565b613ad181613340565b8114613adc57600080fd5b50565b613ae881613352565b8114613af357600080fd5b50565b613aff8161335e565b8114613b0a57600080fd5b50565b613b16816133aa565b8114613b2157600080fd5b5056fea2646970667358221220350ed54b53af8aefd7d59a68a32e74cccd6801bb4bcc525777a842572a75e2c764736f6c63430008060033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f64616d686f73742e72752f6d696e746e6573742d6170692f6974656d2f7b69647d2e6a736f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4d696e74204e657374205465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d4e540000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101345760003560e01c80634e1273f4116100ab578063bd85b0391161006f578063bd85b039146103f3578063d936547e14610430578063e985e9c51461046d578063f242432a146104aa578063f2fde38b146104d3578063f5298aca146104fc57610134565b80634e1273f41461030e5780634f558e791461034b578063715018a6146103885780638da5cb5b1461039f578063a22cb465146103ca57610134565b8063156e29f6116100fd578063156e29f6146102445780632eb2c2d61461026057806330cc7ae0146102895780633ccfd60b146102b257806344a0d68a146102bc5780634a4c560d146102e557610134565b8062fdd58e1461013957806301ffc9a71461017657806302fe5305146101b35780630e89341c146101dc57806313faede614610219575b600080fd5b34801561014557600080fd5b50610160600480360381019061015b9190612869565b610525565b60405161016d91906130c8565b60405180910390f35b34801561018257600080fd5b5061019d60048036038101906101989190612974565b6105ee565b6040516101aa9190612eab565b60405180910390f35b3480156101bf57600080fd5b506101da60048036038101906101d591906129ce565b6106d0565b005b3480156101e857600080fd5b5061020360048036038101906101fe9190612a17565b610758565b6040516102109190612ec6565b60405180910390f35b34801561022557600080fd5b5061022e6107ec565b60405161023b91906130c8565b60405180910390f35b61025e600480360381019061025991906128a9565b6107f2565b005b34801561026c57600080fd5b50610287600480360381019061028291906126c3565b6108cd565b005b34801561029557600080fd5b506102b060048036038101906102ab9190612656565b61096e565b005b6102ba610a45565b005b3480156102c857600080fd5b506102e360048036038101906102de9190612a17565b610b01565b005b3480156102f157600080fd5b5061030c60048036038101906103079190612656565b610b87565b005b34801561031a57600080fd5b50610335600480360381019061033091906128fc565b610c5e565b6040516103429190612e52565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d9190612a17565b610d77565b60405161037f9190612eab565b60405180910390f35b34801561039457600080fd5b5061039d610d8b565b005b3480156103ab57600080fd5b506103b4610e13565b6040516103c19190612d75565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612829565b610e3d565b005b3480156103ff57600080fd5b5061041a60048036038101906104159190612a17565b610e53565b60405161042791906130c8565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190612656565b610e70565b6040516104649190612eab565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612683565b610e90565b6040516104a19190612eab565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612792565b610f24565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190612656565b610fc5565b005b34801561050857600080fd5b50610523600480360381019061051e91906128a9565b6110bd565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d90612f28565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106b957507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106c957506106c882611149565b5b9050919050565b6106d86111b3565b73ffffffffffffffffffffffffffffffffffffffff166106f6610e13565b73ffffffffffffffffffffffffffffffffffffffff161461074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074390613028565b60405180910390fd5b610755816111bb565b50565b606060028054610767906133f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610793906133f6565b80156107e05780601f106107b5576101008083540402835291602001916107e0565b820191906000526020600020905b8154815290600101906020018083116107c357829003601f168201915b50505050509050919050565b60055481565b600081116107ff57600080fd5b610807610e13565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ad5760011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146108ac578060055461089f91906132b2565b3410156108ab57600080fd5b5b5b6108c8838383604051806020016040528060008152506111d5565b505050565b6108d56111b3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061091b575061091a856109156111b3565b610e90565b5b61095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190612fc8565b60405180910390fd5b610967858585858561136b565b5050505050565b6109766111b3565b73ffffffffffffffffffffffffffffffffffffffff16610994610e13565b73ffffffffffffffffffffffffffffffffffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613028565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a4d6111b3565b73ffffffffffffffffffffffffffffffffffffffff16610a6b610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890613028565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610aff57600080fd5b565b610b096111b3565b73ffffffffffffffffffffffffffffffffffffffff16610b27610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490613028565b60405180910390fd5b8060058190555050565b610b8f6111b3565b73ffffffffffffffffffffffffffffffffffffffff16610bad610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90613028565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60608151835114610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90613068565b60405180910390fd5b6000835167ffffffffffffffff811115610cc157610cc061352f565b5b604051908082528060200260200182016040528015610cef5781602001602082028036833780820191505090505b50905060005b8451811015610d6c57610d3c858281518110610d1457610d13613500565b5b6020026020010151858381518110610d2f57610d2e613500565b5b6020026020010151610525565b828281518110610d4f57610d4e613500565b5b60200260200101818152505080610d6590613459565b9050610cf5565b508091505092915050565b600080610d8383610e53565b119050919050565b610d936111b3565b73ffffffffffffffffffffffffffffffffffffffff16610db1610e13565b73ffffffffffffffffffffffffffffffffffffffff1614610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe90613028565b60405180910390fd5b610e11600061167f565b565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e4f610e486111b3565b8383611745565b5050565b600060036000838152602001908152602001600020549050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f2c6111b3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610f725750610f7185610f6c6111b3565b610e90565b5b610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa890612f88565b60405180910390fd5b610fbe85858585856118b2565b5050505050565b610fcd6111b3565b73ffffffffffffffffffffffffffffffffffffffff16610feb610e13565b73ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890613028565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890612f48565b60405180910390fd5b6110ba8161167f565b50565b6110c56111b3565b73ffffffffffffffffffffffffffffffffffffffff166110e3610e13565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113090613028565b60405180910390fd5b611144838383611b34565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b80600290805190602001906111d192919061232e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c906130a8565b60405180910390fd5b600061124f6111b3565b90506112708160008761126188611d51565b61126a88611d51565b87611dcb565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112cf919061325c565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161134d9291906130e3565b60405180910390a461136481600087878787611f45565b5050505050565b81518351146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613088565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612fa8565b60405180910390fd5b60006114296111b3565b9050611439818787878787611dcb565b60005b84518110156115ea57600085828151811061145a57611459613500565b5b60200260200101519050600085838151811061147957611478613500565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190613008565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115cf919061325c565b92505081905550505050806115e390613459565b905061143c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611661929190612e74565b60405180910390a461167781878787878761212c565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab90613048565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118a59190612eab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990612fa8565b60405180910390fd5b600061192c6111b3565b905061194c81878761193d88611d51565b61194688611d51565b87611dcb565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613008565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a98919061325c565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611b159291906130e3565b60405180910390a4611b2b828888888888611f45565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90612fe8565b60405180910390fd5b6000611bae6111b3565b9050611bde81856000611bc087611d51565b611bc987611d51565b60405180602001604052806000815250611dcb565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6c90612f68565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611d429291906130e3565b60405180910390a45050505050565b60606000600167ffffffffffffffff811115611d7057611d6f61352f565b5b604051908082528060200260200182016040528015611d9e5781602001602082028036833780820191505090505b5090508281600081518110611db657611db5613500565b5b60200260200101818152505080915050919050565b611dd9868686868686612313565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611e8b5760005b8351811015611e8957828181518110611e2d57611e2c613500565b5b602002602001015160036000868481518110611e4c57611e4b613500565b5b602002602001015181526020019081526020016000206000828254611e71919061325c565b9250508190555080611e8290613459565b9050611e11565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f3d5760005b8351811015611f3b57828181518110611edf57611ede613500565b5b602002602001015160036000868481518110611efe57611efd613500565b5b602002602001015181526020019081526020016000206000828254611f23919061330c565b9250508190555080611f3490613459565b9050611ec3565b505b505050505050565b611f648473ffffffffffffffffffffffffffffffffffffffff1661231b565b15612124578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611faa959493929190612df8565b602060405180830381600087803b158015611fc457600080fd5b505af1925050508015611ff557506040513d601f19601f82011682018060405250810190611ff291906129a1565b60015b61209b5761200161355e565b806308c379a0141561205e5750612016613a32565b806120215750612060565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120559190612ec6565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209290612ee8565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990612f08565b60405180910390fd5b505b505050505050565b61214b8473ffffffffffffffffffffffffffffffffffffffff1661231b565b1561230b578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612191959493929190612d90565b602060405180830381600087803b1580156121ab57600080fd5b505af19250505080156121dc57506040513d601f19601f820116820180604052508101906121d991906129a1565b60015b612282576121e861355e565b806308c379a0141561224557506121fd613a32565b806122085750612247565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c9190612ec6565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227990612ee8565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090612f08565b60405180910390fd5b505b505050505050565b505050505050565b600080823b905060008111915050919050565b82805461233a906133f6565b90600052602060002090601f01602090048101928261235c57600085556123a3565b82601f1061237557805160ff19168380011785556123a3565b828001600101855582156123a3579182015b828111156123a2578251825591602001919060010190612387565b5b5090506123b091906123b4565b5090565b5b808211156123cd5760008160009055506001016123b5565b5090565b60006123e46123df84613131565b61310c565b9050808382526020820190508285602086028201111561240757612406613585565b5b60005b85811015612437578161241d8882612535565b84526020840193506020830192505060018101905061240a565b5050509392505050565b600061245461244f8461315d565b61310c565b9050808382526020820190508285602086028201111561247757612476613585565b5b60005b858110156124a7578161248d8882612641565b84526020840193506020830192505060018101905061247a565b5050509392505050565b60006124c46124bf84613189565b61310c565b9050828152602081018484840111156124e0576124df61358a565b5b6124eb8482856133b4565b509392505050565b6000612506612501846131ba565b61310c565b9050828152602081018484840111156125225761252161358a565b5b61252d8482856133b4565b509392505050565b60008135905061254481613ac8565b92915050565b600082601f83011261255f5761255e613580565b5b813561256f8482602086016123d1565b91505092915050565b600082601f83011261258d5761258c613580565b5b813561259d848260208601612441565b91505092915050565b6000813590506125b581613adf565b92915050565b6000813590506125ca81613af6565b92915050565b6000815190506125df81613af6565b92915050565b600082601f8301126125fa576125f9613580565b5b813561260a8482602086016124b1565b91505092915050565b600082601f83011261262857612627613580565b5b81356126388482602086016124f3565b91505092915050565b60008135905061265081613b0d565b92915050565b60006020828403121561266c5761266b613594565b5b600061267a84828501612535565b91505092915050565b6000806040838503121561269a57612699613594565b5b60006126a885828601612535565b92505060206126b985828601612535565b9150509250929050565b600080600080600060a086880312156126df576126de613594565b5b60006126ed88828901612535565b95505060206126fe88828901612535565b945050604086013567ffffffffffffffff81111561271f5761271e61358f565b5b61272b88828901612578565b935050606086013567ffffffffffffffff81111561274c5761274b61358f565b5b61275888828901612578565b925050608086013567ffffffffffffffff8111156127795761277861358f565b5b612785888289016125e5565b9150509295509295909350565b600080600080600060a086880312156127ae576127ad613594565b5b60006127bc88828901612535565b95505060206127cd88828901612535565b94505060406127de88828901612641565b93505060606127ef88828901612641565b925050608086013567ffffffffffffffff8111156128105761280f61358f565b5b61281c888289016125e5565b9150509295509295909350565b600080604083850312156128405761283f613594565b5b600061284e85828601612535565b925050602061285f858286016125a6565b9150509250929050565b600080604083850312156128805761287f613594565b5b600061288e85828601612535565b925050602061289f85828601612641565b9150509250929050565b6000806000606084860312156128c2576128c1613594565b5b60006128d086828701612535565b93505060206128e186828701612641565b92505060406128f286828701612641565b9150509250925092565b6000806040838503121561291357612912613594565b5b600083013567ffffffffffffffff8111156129315761293061358f565b5b61293d8582860161254a565b925050602083013567ffffffffffffffff81111561295e5761295d61358f565b5b61296a85828601612578565b9150509250929050565b60006020828403121561298a57612989613594565b5b6000612998848285016125bb565b91505092915050565b6000602082840312156129b7576129b6613594565b5b60006129c5848285016125d0565b91505092915050565b6000602082840312156129e4576129e3613594565b5b600082013567ffffffffffffffff811115612a0257612a0161358f565b5b612a0e84828501612613565b91505092915050565b600060208284031215612a2d57612a2c613594565b5b6000612a3b84828501612641565b91505092915050565b6000612a508383612d57565b60208301905092915050565b612a6581613340565b82525050565b6000612a76826131fb565b612a808185613229565b9350612a8b836131eb565b8060005b83811015612abc578151612aa38882612a44565b9750612aae8361321c565b925050600181019050612a8f565b5085935050505092915050565b612ad281613352565b82525050565b6000612ae382613206565b612aed818561323a565b9350612afd8185602086016133c3565b612b0681613599565b840191505092915050565b6000612b1c82613211565b612b26818561324b565b9350612b368185602086016133c3565b612b3f81613599565b840191505092915050565b6000612b5760348361324b565b9150612b62826135b7565b604082019050919050565b6000612b7a60288361324b565b9150612b8582613606565b604082019050919050565b6000612b9d602b8361324b565b9150612ba882613655565b604082019050919050565b6000612bc060268361324b565b9150612bcb826136a4565b604082019050919050565b6000612be360248361324b565b9150612bee826136f3565b604082019050919050565b6000612c0660298361324b565b9150612c1182613742565b604082019050919050565b6000612c2960258361324b565b9150612c3482613791565b604082019050919050565b6000612c4c60328361324b565b9150612c57826137e0565b604082019050919050565b6000612c6f60238361324b565b9150612c7a8261382f565b604082019050919050565b6000612c92602a8361324b565b9150612c9d8261387e565b604082019050919050565b6000612cb560208361324b565b9150612cc0826138cd565b602082019050919050565b6000612cd860298361324b565b9150612ce3826138f6565b604082019050919050565b6000612cfb60298361324b565b9150612d0682613945565b604082019050919050565b6000612d1e60288361324b565b9150612d2982613994565b604082019050919050565b6000612d4160218361324b565b9150612d4c826139e3565b604082019050919050565b612d60816133aa565b82525050565b612d6f816133aa565b82525050565b6000602082019050612d8a6000830184612a5c565b92915050565b600060a082019050612da56000830188612a5c565b612db26020830187612a5c565b8181036040830152612dc48186612a6b565b90508181036060830152612dd88185612a6b565b90508181036080830152612dec8184612ad8565b90509695505050505050565b600060a082019050612e0d6000830188612a5c565b612e1a6020830187612a5c565b612e276040830186612d66565b612e346060830185612d66565b8181036080830152612e468184612ad8565b90509695505050505050565b60006020820190508181036000830152612e6c8184612a6b565b905092915050565b60006040820190508181036000830152612e8e8185612a6b565b90508181036020830152612ea28184612a6b565b90509392505050565b6000602082019050612ec06000830184612ac9565b92915050565b60006020820190508181036000830152612ee08184612b11565b905092915050565b60006020820190508181036000830152612f0181612b4a565b9050919050565b60006020820190508181036000830152612f2181612b6d565b9050919050565b60006020820190508181036000830152612f4181612b90565b9050919050565b60006020820190508181036000830152612f6181612bb3565b9050919050565b60006020820190508181036000830152612f8181612bd6565b9050919050565b60006020820190508181036000830152612fa181612bf9565b9050919050565b60006020820190508181036000830152612fc181612c1c565b9050919050565b60006020820190508181036000830152612fe181612c3f565b9050919050565b6000602082019050818103600083015261300181612c62565b9050919050565b6000602082019050818103600083015261302181612c85565b9050919050565b6000602082019050818103600083015261304181612ca8565b9050919050565b6000602082019050818103600083015261306181612ccb565b9050919050565b6000602082019050818103600083015261308181612cee565b9050919050565b600060208201905081810360008301526130a181612d11565b9050919050565b600060208201905081810360008301526130c181612d34565b9050919050565b60006020820190506130dd6000830184612d66565b92915050565b60006040820190506130f86000830185612d66565b6131056020830184612d66565b9392505050565b6000613116613127565b90506131228282613428565b919050565b6000604051905090565b600067ffffffffffffffff82111561314c5761314b61352f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156131785761317761352f565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156131a4576131a361352f565b5b6131ad82613599565b9050602081019050919050565b600067ffffffffffffffff8211156131d5576131d461352f565b5b6131de82613599565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613267826133aa565b9150613272836133aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132a7576132a66134a2565b5b828201905092915050565b60006132bd826133aa565b91506132c8836133aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613301576133006134a2565b5b828202905092915050565b6000613317826133aa565b9150613322836133aa565b925082821015613335576133346134a2565b5b828203905092915050565b600061334b8261338a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156133e15780820151818401526020810190506133c6565b838111156133f0576000848401525b50505050565b6000600282049050600182168061340e57607f821691505b60208210811415613422576134216134d1565b5b50919050565b61343182613599565b810181811067ffffffffffffffff821117156134505761344f61352f565b5b80604052505050565b6000613464826133aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613497576134966134a2565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561357d5760046000803e61357a6000516135aa565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613a4257613ac5565b613a4a613127565b60043d036004823e80513d602482011167ffffffffffffffff82111715613a72575050613ac5565b808201805167ffffffffffffffff811115613a905750505050613ac5565b80602083010160043d038501811115613aad575050505050613ac5565b613abc82602001850186613428565b82955050505050505b90565b613ad181613340565b8114613adc57600080fd5b50565b613ae881613352565b8114613af357600080fd5b50565b613aff8161335e565b8114613b0a57600080fd5b50565b613b16816133aa565b8114613b2157600080fd5b5056fea2646970667358221220350ed54b53af8aefd7d59a68a32e74cccd6801bb4bcc525777a842572a75e2c764736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f64616d686f73742e72752f6d696e746e6573742d6170692f6974656d2f7b69647d2e6a736f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4d696e74204e657374205465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d4e540000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : uri (string): https://damhost.ru/mintnest-api/item/{id}.json
Arg [1] : _name (string): Mint Nest Test
Arg [2] : _symbol (string): MNT
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [4] : 68747470733a2f2f64616d686f73742e72752f6d696e746e6573742d6170692f
Arg [5] : 6974656d2f7b69647d2e6a736f6e000000000000000000000000000000000000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [7] : 4d696e74204e6573742054657374000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [9] : 4d4e540000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
45377:1301:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30005:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29028:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46237:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29749:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45430:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45659:338;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31944:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46441:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46555:120;;;:::i;:::-;;46005:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46334:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30402:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44444:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9633:103;;;;;;;;;;;;;:::i;:::-;;8982:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30999:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44233:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45468:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31226:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31466:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9891:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46102:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30005:231;30091:7;30138:1;30119:21;;:7;:21;;;;30111:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;30206:9;:13;30216:2;30206:13;;;;;;;;;;;:22;30220:7;30206:22;;;;;;;;;;;;;;;;30199:29;;30005:231;;;;:::o;29028:310::-;29130:4;29182:26;29167:41;;;:11;:41;;;;:110;;;;29240:37;29225:52;;;:11;:52;;;;29167:110;:163;;;;29294:36;29318:11;29294:23;:36::i;:::-;29167:163;29147:183;;29028:310;;;:::o;46237:89::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46303:15:::1;46311:6;46303:7;:15::i;:::-;46237:89:::0;:::o;29749:105::-;29809:13;29842:4;29835:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29749:105;;;:::o;45430:31::-;;;;:::o;45659:338::-;45768:1;45754:11;:15;45746:24;;;;;;45799:7;:5;:7::i;:::-;45785:21;;:10;:21;;;45781:164;;45853:4;45826:31;;:11;:23;45838:10;45826:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;45823:111;;45906:11;45899:4;;:18;;;;:::i;:::-;45886:9;:31;;45878:40;;;;;;45823:111;45781:164;45957:32;45963:3;45968;45973:11;45957:32;;;;;;;;;;;;:5;:32::i;:::-;45659:338;;;:::o;31944:442::-;32185:12;:10;:12::i;:::-;32177:20;;:4;:20;;;:60;;;;32201:36;32218:4;32224:12;:10;:12::i;:::-;32201:16;:36::i;:::-;32177:60;32155:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;32326:52;32349:4;32355:2;32359:3;32364:7;32373:4;32326:22;:52::i;:::-;31944:442;;;;;:::o;46441:106::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46534:5:::1;46513:11;:18;46525:5;46513:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;46441:106:::0;:::o;46555:120::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46627:10:::1;46619:24;;:47;46644:21;46619:47;;;;;;;;;;;;;;;;;;;;;;;46611:56;;;::::0;::::1;;46555:120::o:0;46005:86::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46075:8:::1;46068:4;:15;;;;46005:86:::0;:::o;46334:99::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46421:4:::1;46400:11;:18;46412:5;46400:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;46334:99:::0;:::o;30402:524::-;30558:16;30619:3;:10;30600:8;:15;:29;30592:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;30688:30;30735:8;:15;30721:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30688:63;;30769:9;30764:122;30788:8;:15;30784:1;:19;30764:122;;;30844:30;30854:8;30863:1;30854:11;;;;;;;;:::i;:::-;;;;;;;;30867:3;30871:1;30867:6;;;;;;;;:::i;:::-;;;;;;;;30844:9;:30::i;:::-;30825:13;30839:1;30825:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;30805:3;;;;:::i;:::-;;;30764:122;;;;30905:13;30898:20;;;30402:524;;;;:::o;44444:122::-;44501:4;44557:1;44525:29;44551:2;44525:25;:29::i;:::-;:33;44518:40;;44444:122;;;:::o;9633:103::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9698:30:::1;9725:1;9698:18;:30::i;:::-;9633:103::o:0;8982:87::-;9028:7;9055:6;;;;;;;;;;;9048:13;;8982:87;:::o;30999:155::-;31094:52;31113:12;:10;:12::i;:::-;31127:8;31137;31094:18;:52::i;:::-;30999:155;;:::o;44233:113::-;44295:7;44322:12;:16;44335:2;44322:16;;;;;;;;;;;;44315:23;;44233:113;;;:::o;45468:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;31226:168::-;31325:4;31349:18;:27;31368:7;31349:27;;;;;;;;;;;;;;;:37;31377:8;31349:37;;;;;;;;;;;;;;;;;;;;;;;;;31342:44;;31226:168;;;;:::o;31466:401::-;31682:12;:10;:12::i;:::-;31674:20;;:4;:20;;;:60;;;;31698:36;31715:4;31721:12;:10;:12::i;:::-;31698:16;:36::i;:::-;31674:60;31652:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;31814:45;31832:4;31838:2;31842;31846:6;31854:4;31814:17;:45::i;:::-;31466:401;;;;;:::o;9891:201::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10000:1:::1;9980:22;;:8;:22;;;;9972:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10056:28;10075:8;10056:18;:28::i;:::-;9891:201:::0;:::o;46102:127::-;9213:12;:10;:12::i;:::-;9202:23;;:7;:5;:7::i;:::-;:23;;;9194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46192:29:::1;46198:8;46208:3;46213:7;46192:5;:29::i;:::-;46102:127:::0;;;:::o;20383:157::-;20468:4;20507:25;20492:40;;;:11;:40;;;;20485:47;;20383:157;;;:::o;7706:98::-;7759:7;7786:10;7779:17;;7706:98;:::o;35946:88::-;36020:6;36013:4;:13;;;;;;;;;;;;:::i;:::-;;35946:88;:::o;36420:569::-;36587:1;36573:16;;:2;:16;;;;36565:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;36640:16;36659:12;:10;:12::i;:::-;36640:31;;36684:102;36705:8;36723:1;36727:2;36731:21;36749:2;36731:17;:21::i;:::-;36754:25;36772:6;36754:17;:25::i;:::-;36781:4;36684:20;:102::i;:::-;36820:6;36799:9;:13;36809:2;36799:13;;;;;;;;;;;:17;36813:2;36799:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;36879:2;36842:52;;36875:1;36842:52;;36857:8;36842:52;;;36883:2;36887:6;36842:52;;;;;;;:::i;:::-;;;;;;;;36907:74;36938:8;36956:1;36960:2;36964;36968:6;36976:4;36907:30;:74::i;:::-;36554:435;36420:569;;;;:::o;34028:1074::-;34255:7;:14;34241:3;:10;:28;34233:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;34347:1;34333:16;;:2;:16;;;;34325:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;34404:16;34423:12;:10;:12::i;:::-;34404:31;;34448:60;34469:8;34479:4;34485:2;34489:3;34494:7;34503:4;34448:20;:60::i;:::-;34526:9;34521:421;34545:3;:10;34541:1;:14;34521:421;;;34577:10;34590:3;34594:1;34590:6;;;;;;;;:::i;:::-;;;;;;;;34577:19;;34611:14;34628:7;34636:1;34628:10;;;;;;;;:::i;:::-;;;;;;;;34611:27;;34655:19;34677:9;:13;34687:2;34677:13;;;;;;;;;;;:19;34691:4;34677:19;;;;;;;;;;;;;;;;34655:41;;34734:6;34719:11;:21;;34711:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;34867:6;34853:11;:20;34831:9;:13;34841:2;34831:13;;;;;;;;;;;:19;34845:4;34831:19;;;;;;;;;;;;;;;:42;;;;34924:6;34903:9;:13;34913:2;34903:13;;;;;;;;;;;:17;34917:2;34903:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;34562:380;;;34557:3;;;;:::i;:::-;;;34521:421;;;;34989:2;34959:47;;34983:4;34959:47;;34973:8;34959:47;;;34993:3;34998:7;34959:47;;;;;;;:::i;:::-;;;;;;;;35019:75;35055:8;35065:4;35071:2;35075:3;35080:7;35089:4;35019:35;:75::i;:::-;34222:880;34028:1074;;;;;:::o;10252:191::-;10326:16;10345:6;;;;;;;;;;;10326:25;;10371:8;10362:6;;:17;;;;;;;;;;;;;;;;;;10426:8;10395:40;;10416:8;10395:40;;;;;;;;;;;;10315:128;10252:191;:::o;40214:331::-;40369:8;40360:17;;:5;:17;;;;40352:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;40472:8;40434:18;:25;40453:5;40434:25;;;;;;;;;;;;;;;:35;40460:8;40434:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;40518:8;40496:41;;40511:5;40496:41;;;40528:8;40496:41;;;;;;:::i;:::-;;;;;;;;40214:331;;;:::o;32850:820::-;33052:1;33038:16;;:2;:16;;;;33030:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;33109:16;33128:12;:10;:12::i;:::-;33109:31;;33153:96;33174:8;33184:4;33190:2;33194:21;33212:2;33194:17;:21::i;:::-;33217:25;33235:6;33217:17;:25::i;:::-;33244:4;33153:20;:96::i;:::-;33262:19;33284:9;:13;33294:2;33284:13;;;;;;;;;;;:19;33298:4;33284:19;;;;;;;;;;;;;;;;33262:41;;33337:6;33322:11;:21;;33314:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;33462:6;33448:11;:20;33426:9;:13;33436:2;33426:13;;;;;;;;;;;:19;33440:4;33426:19;;;;;;;;;;;;;;;:42;;;;33511:6;33490:9;:13;33500:2;33490:13;;;;;;;;;;;:17;33504:2;33490:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;33566:2;33535:46;;33560:4;33535:46;;33550:8;33535:46;;;33570:2;33574:6;33535:46;;;;;;;:::i;:::-;;;;;;;;33594:68;33625:8;33635:4;33641:2;33645;33649:6;33657:4;33594:30;:68::i;:::-;33019:651;;32850:820;;;;;:::o;38330:648::-;38473:1;38457:18;;:4;:18;;;;38449:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;38528:16;38547:12;:10;:12::i;:::-;38528:31;;38572:102;38593:8;38603:4;38617:1;38621:21;38639:2;38621:17;:21::i;:::-;38644:25;38662:6;38644:17;:25::i;:::-;38572:102;;;;;;;;;;;;:20;:102::i;:::-;38687:19;38709:9;:13;38719:2;38709:13;;;;;;;;;;;:19;38723:4;38709:19;;;;;;;;;;;;;;;;38687:41;;38762:6;38747:11;:21;;38739:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;38881:6;38867:11;:20;38845:9;:13;38855:2;38845:13;;;;;;;;;;;:19;38859:4;38845:19;;;;;;;;;;;;;;;:42;;;;38955:1;38916:54;;38941:4;38916:54;;38931:8;38916:54;;;38959:2;38963:6;38916:54;;;;;;;:::i;:::-;;;;;;;;38438:540;;38330:648;;;:::o;43303:198::-;43369:16;43398:22;43437:1;43423:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43398:41;;43461:7;43450:5;43456:1;43450:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;43488:5;43481:12;;;43303:198;;;:::o;44641:655::-;44880:66;44907:8;44917:4;44923:2;44927:3;44932:7;44941:4;44880:26;:66::i;:::-;44979:1;44963:18;;:4;:18;;;44959:160;;;45003:9;44998:110;45022:3;:10;45018:1;:14;44998:110;;;45082:7;45090:1;45082:10;;;;;;;;:::i;:::-;;;;;;;;45058:12;:20;45071:3;45075:1;45071:6;;;;;;;;:::i;:::-;;;;;;;;45058:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;45034:3;;;;:::i;:::-;;;44998:110;;;;44959:160;45149:1;45135:16;;:2;:16;;;45131:158;;;45173:9;45168:110;45192:3;:10;45188:1;:14;45168:110;;;45252:7;45260:1;45252:10;;;;;;;;:::i;:::-;;;;;;;;45228:12;:20;45241:3;45245:1;45241:6;;;;;;;;:::i;:::-;;;;;;;;45228:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;45204:3;;;;:::i;:::-;;;45168:110;;;;45131:158;44641:655;;;;;;:::o;41730:744::-;41945:15;:2;:13;;;:15::i;:::-;41941:526;;;41998:2;41981:38;;;42020:8;42030:4;42036:2;42040:6;42048:4;41981:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41977:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;42329:6;42322:14;;;;;;;;;;;:::i;:::-;;;;;;;;41977:479;;;42378:62;;;;;;;;;;:::i;:::-;;;;;;;;41977:479;42115:43;;;42103:55;;;:8;:55;;;;42099:154;;42183:50;;;;;;;;;;:::i;:::-;;;;;;;;42099:154;42054:214;41941:526;41730:744;;;;;;:::o;42482:813::-;42722:15;:2;:13;;;:15::i;:::-;42718:570;;;42775:2;42758:43;;;42802:8;42812:4;42818:3;42823:7;42832:4;42758:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;42754:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;43150:6;43143:14;;;;;;;;;;;:::i;:::-;;;;;;;;42754:523;;;43199:62;;;;;;;;;;:::i;:::-;;;;;;;;42754:523;42931:48;;;42919:60;;;:8;:60;;;;42915:159;;43004:50;;;;;;;;;;:::i;:::-;;;;;;;;42915:159;42838:251;42718:570;42482:813;;;;;;:::o;41501:221::-;;;;;;;:::o;11270:387::-;11330:4;11538:12;11605:7;11593:20;11585:28;;11648:1;11641:4;:8;11634:15;;;11270: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:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:2;;;2188:79;;:::i;:::-;2157:2;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2383:87;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:2;;2621:79;;:::i;:::-;2580:2;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;;;;;:::o;2886:370::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:2;;3014:79;;:::i;:::-;2973:2;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3311:84;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3452:86;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3606:79;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:2;;3816:79;;:::i;:::-;3775:2;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:2;;4175:79;;:::i;:::-;4134:2;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4460:87;;;;:::o;4553:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:2;;;4667:79;;:::i;:::-;4629:2;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4619:263;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:2;;;5019:79;;:::i;:::-;4981:2;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4971:391;;;;;:::o;5368:1509::-;5522:6;5530;5538;5546;5554;5603:3;5591:9;5582:7;5578:23;5574:33;5571:2;;;5610:79;;:::i;:::-;5571:2;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;6013:2;6002:9;5998:18;5985:32;6044:18;6036:6;6033:30;6030:2;;;6066:79;;:::i;:::-;6030:2;6171:78;6241:7;6232:6;6221:9;6217:22;6171:78;:::i;:::-;6161:88;;5956:303;6326:2;6315:9;6311:18;6298:32;6357:18;6349:6;6346:30;6343:2;;;6379:79;;:::i;:::-;6343:2;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;:::i;:::-;6474:88;;6269:303;6639:3;6628:9;6624:19;6611:33;6671:18;6663:6;6660:30;6657:2;;;6693:79;;:::i;:::-;6657:2;6798:62;6852:7;6843:6;6832:9;6828:22;6798:62;:::i;:::-;6788:72;;6582:288;5561:1316;;;;;;;;:::o;6883:1089::-;6987:6;6995;7003;7011;7019;7068:3;7056:9;7047:7;7043:23;7039:33;7036:2;;;7075:79;;:::i;:::-;7036:2;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;7322:2;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7293:118;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7578:2;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7549:118;7734:3;7723:9;7719:19;7706:33;7766:18;7758:6;7755:30;7752:2;;;7788:79;;:::i;:::-;7752:2;7893:62;7947:7;7938:6;7927:9;7923:22;7893:62;:::i;:::-;7883:72;;7677:288;7026:946;;;;;;;;:::o;7978:468::-;8043:6;8051;8100:2;8088:9;8079:7;8075:23;8071:32;8068:2;;;8106:79;;:::i;:::-;8068:2;8226:1;8251:53;8296:7;8287:6;8276:9;8272:22;8251:53;:::i;:::-;8241:63;;8197:117;8353:2;8379:50;8421:7;8412:6;8401:9;8397:22;8379:50;:::i;:::-;8369:60;;8324:115;8058:388;;;;;:::o;8452:474::-;8520:6;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:2;;;8583:79;;:::i;:::-;8545:2;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8535:391;;;;;:::o;8932:619::-;9009:6;9017;9025;9074:2;9062:9;9053:7;9049:23;9045:32;9042:2;;;9080:79;;:::i;:::-;9042:2;9200:1;9225:53;9270:7;9261:6;9250:9;9246:22;9225:53;:::i;:::-;9215:63;;9171:117;9327:2;9353:53;9398:7;9389:6;9378:9;9374:22;9353:53;:::i;:::-;9343:63;;9298:118;9455:2;9481:53;9526:7;9517:6;9506:9;9502:22;9481:53;:::i;:::-;9471:63;;9426:118;9032:519;;;;;:::o;9557:894::-;9675:6;9683;9732:2;9720:9;9711:7;9707:23;9703:32;9700:2;;;9738:79;;:::i;:::-;9700:2;9886:1;9875:9;9871:17;9858:31;9916:18;9908:6;9905:30;9902:2;;;9938:79;;:::i;:::-;9902:2;10043:78;10113:7;10104:6;10093:9;10089:22;10043:78;:::i;:::-;10033:88;;9829:302;10198:2;10187:9;10183:18;10170:32;10229:18;10221:6;10218:30;10215:2;;;10251:79;;:::i;:::-;10215:2;10356:78;10426:7;10417:6;10406:9;10402:22;10356:78;:::i;:::-;10346:88;;10141:303;9690:761;;;;;:::o;10457:327::-;10515:6;10564:2;10552:9;10543:7;10539:23;10535:32;10532:2;;;10570:79;;:::i;:::-;10532:2;10690:1;10715:52;10759:7;10750:6;10739:9;10735:22;10715:52;:::i;:::-;10705:62;;10661:116;10522:262;;;;:::o;10790:349::-;10859:6;10908:2;10896:9;10887:7;10883:23;10879:32;10876:2;;;10914:79;;:::i;:::-;10876:2;11034:1;11059:63;11114:7;11105:6;11094:9;11090:22;11059:63;:::i;:::-;11049:73;;11005:127;10866:273;;;;:::o;11145:509::-;11214:6;11263:2;11251:9;11242:7;11238:23;11234:32;11231:2;;;11269:79;;:::i;:::-;11231:2;11417:1;11406:9;11402:17;11389:31;11447:18;11439:6;11436:30;11433:2;;;11469:79;;:::i;:::-;11433:2;11574:63;11629:7;11620:6;11609:9;11605:22;11574:63;:::i;:::-;11564:73;;11360:287;11221:433;;;;:::o;11660:329::-;11719:6;11768:2;11756:9;11747:7;11743:23;11739:32;11736:2;;;11774:79;;:::i;:::-;11736:2;11894:1;11919:53;11964:7;11955:6;11944:9;11940:22;11919:53;:::i;:::-;11909:63;;11865:117;11726:263;;;;:::o;11995:179::-;12064:10;12085:46;12127:3;12119:6;12085:46;:::i;:::-;12163:4;12158:3;12154:14;12140:28;;12075:99;;;;:::o;12180:118::-;12267:24;12285:5;12267:24;:::i;:::-;12262:3;12255:37;12245:53;;:::o;12334:732::-;12453:3;12482:54;12530:5;12482:54;:::i;:::-;12552:86;12631:6;12626:3;12552:86;:::i;:::-;12545:93;;12662:56;12712:5;12662:56;:::i;:::-;12741:7;12772:1;12757:284;12782:6;12779:1;12776:13;12757:284;;;12858:6;12852:13;12885:63;12944:3;12929:13;12885:63;:::i;:::-;12878:70;;12971:60;13024:6;12971:60;:::i;:::-;12961:70;;12817:224;12804:1;12801;12797:9;12792:14;;12757:284;;;12761:14;13057:3;13050:10;;12458:608;;;;;;;:::o;13072:109::-;13153:21;13168:5;13153:21;:::i;:::-;13148:3;13141:34;13131:50;;:::o;13187:360::-;13273:3;13301:38;13333:5;13301:38;:::i;:::-;13355:70;13418:6;13413:3;13355:70;:::i;:::-;13348:77;;13434:52;13479:6;13474:3;13467:4;13460:5;13456:16;13434:52;:::i;:::-;13511:29;13533:6;13511:29;:::i;:::-;13506:3;13502:39;13495:46;;13277:270;;;;;:::o;13553:364::-;13641:3;13669:39;13702:5;13669:39;:::i;:::-;13724:71;13788:6;13783:3;13724:71;:::i;:::-;13717:78;;13804:52;13849:6;13844:3;13837:4;13830:5;13826:16;13804:52;:::i;:::-;13881:29;13903:6;13881:29;:::i;:::-;13876:3;13872:39;13865:46;;13645:272;;;;;:::o;13923:366::-;14065:3;14086:67;14150:2;14145:3;14086:67;:::i;:::-;14079:74;;14162:93;14251:3;14162:93;:::i;:::-;14280:2;14275:3;14271:12;14264:19;;14069:220;;;:::o;14295:366::-;14437:3;14458:67;14522:2;14517:3;14458:67;:::i;:::-;14451:74;;14534:93;14623:3;14534:93;:::i;:::-;14652:2;14647:3;14643:12;14636:19;;14441:220;;;:::o;14667:366::-;14809:3;14830:67;14894:2;14889:3;14830:67;:::i;:::-;14823:74;;14906:93;14995:3;14906:93;:::i;:::-;15024:2;15019:3;15015:12;15008:19;;14813:220;;;:::o;15039:366::-;15181:3;15202:67;15266:2;15261:3;15202:67;:::i;:::-;15195:74;;15278:93;15367:3;15278:93;:::i;:::-;15396:2;15391:3;15387:12;15380:19;;15185:220;;;:::o;15411:366::-;15553:3;15574:67;15638:2;15633:3;15574:67;:::i;:::-;15567:74;;15650:93;15739:3;15650:93;:::i;:::-;15768:2;15763:3;15759:12;15752:19;;15557:220;;;:::o;15783:366::-;15925:3;15946:67;16010:2;16005:3;15946:67;:::i;:::-;15939:74;;16022:93;16111:3;16022:93;:::i;:::-;16140:2;16135:3;16131:12;16124:19;;15929:220;;;:::o;16155:366::-;16297:3;16318:67;16382:2;16377:3;16318:67;:::i;:::-;16311:74;;16394:93;16483:3;16394:93;:::i;:::-;16512:2;16507:3;16503:12;16496:19;;16301:220;;;:::o;16527:366::-;16669:3;16690:67;16754:2;16749:3;16690:67;:::i;:::-;16683:74;;16766:93;16855:3;16766:93;:::i;:::-;16884:2;16879:3;16875:12;16868:19;;16673:220;;;:::o;16899:366::-;17041:3;17062:67;17126:2;17121:3;17062:67;:::i;:::-;17055:74;;17138:93;17227:3;17138:93;:::i;:::-;17256:2;17251:3;17247:12;17240:19;;17045:220;;;:::o;17271:366::-;17413:3;17434:67;17498:2;17493:3;17434:67;:::i;:::-;17427:74;;17510:93;17599:3;17510:93;:::i;:::-;17628:2;17623:3;17619:12;17612:19;;17417:220;;;:::o;17643:366::-;17785:3;17806:67;17870:2;17865:3;17806:67;:::i;:::-;17799:74;;17882:93;17971:3;17882:93;:::i;:::-;18000:2;17995:3;17991:12;17984:19;;17789:220;;;:::o;18015:366::-;18157:3;18178:67;18242:2;18237:3;18178:67;:::i;:::-;18171:74;;18254:93;18343:3;18254:93;:::i;:::-;18372:2;18367:3;18363:12;18356:19;;18161:220;;;:::o;18387:366::-;18529:3;18550:67;18614:2;18609:3;18550:67;:::i;:::-;18543:74;;18626:93;18715:3;18626:93;:::i;:::-;18744:2;18739:3;18735:12;18728:19;;18533:220;;;:::o;18759:366::-;18901:3;18922:67;18986:2;18981:3;18922:67;:::i;:::-;18915:74;;18998:93;19087:3;18998:93;:::i;:::-;19116:2;19111:3;19107:12;19100:19;;18905:220;;;:::o;19131:366::-;19273:3;19294:67;19358:2;19353:3;19294:67;:::i;:::-;19287:74;;19370:93;19459:3;19370:93;:::i;:::-;19488:2;19483:3;19479:12;19472:19;;19277:220;;;:::o;19503:108::-;19580:24;19598:5;19580:24;:::i;:::-;19575:3;19568:37;19558:53;;:::o;19617:118::-;19704:24;19722:5;19704:24;:::i;:::-;19699:3;19692:37;19682:53;;:::o;19741:222::-;19834:4;19872:2;19861:9;19857:18;19849:26;;19885:71;19953:1;19942:9;19938:17;19929:6;19885:71;:::i;:::-;19839:124;;;;:::o;19969:1053::-;20292:4;20330:3;20319:9;20315:19;20307:27;;20344:71;20412:1;20401:9;20397:17;20388:6;20344:71;:::i;:::-;20425:72;20493:2;20482:9;20478:18;20469:6;20425:72;:::i;:::-;20544:9;20538:4;20534:20;20529:2;20518:9;20514:18;20507:48;20572:108;20675:4;20666:6;20572:108;:::i;:::-;20564:116;;20727:9;20721:4;20717:20;20712:2;20701:9;20697:18;20690:48;20755:108;20858:4;20849:6;20755:108;:::i;:::-;20747:116;;20911:9;20905:4;20901:20;20895:3;20884:9;20880:19;20873:49;20939:76;21010:4;21001:6;20939:76;:::i;:::-;20931:84;;20297:725;;;;;;;;:::o;21028:751::-;21251:4;21289:3;21278:9;21274:19;21266:27;;21303:71;21371:1;21360:9;21356:17;21347:6;21303:71;:::i;:::-;21384:72;21452:2;21441:9;21437:18;21428:6;21384:72;:::i;:::-;21466;21534:2;21523:9;21519:18;21510:6;21466:72;:::i;:::-;21548;21616:2;21605:9;21601:18;21592:6;21548:72;:::i;:::-;21668:9;21662:4;21658:20;21652:3;21641:9;21637:19;21630:49;21696:76;21767:4;21758:6;21696:76;:::i;:::-;21688:84;;21256:523;;;;;;;;:::o;21785:373::-;21928:4;21966:2;21955:9;21951:18;21943:26;;22015:9;22009:4;22005:20;22001:1;21990:9;21986:17;21979:47;22043:108;22146:4;22137:6;22043:108;:::i;:::-;22035:116;;21933:225;;;;:::o;22164:634::-;22385:4;22423:2;22412:9;22408:18;22400:26;;22472:9;22466:4;22462:20;22458:1;22447:9;22443:17;22436:47;22500:108;22603:4;22594:6;22500:108;:::i;:::-;22492:116;;22655:9;22649:4;22645:20;22640:2;22629:9;22625:18;22618:48;22683:108;22786:4;22777:6;22683:108;:::i;:::-;22675:116;;22390:408;;;;;:::o;22804:210::-;22891:4;22929:2;22918:9;22914:18;22906:26;;22942:65;23004:1;22993:9;22989:17;22980:6;22942:65;:::i;:::-;22896:118;;;;:::o;23020:313::-;23133:4;23171:2;23160:9;23156:18;23148:26;;23220:9;23214:4;23210:20;23206:1;23195:9;23191:17;23184:47;23248:78;23321:4;23312:6;23248:78;:::i;:::-;23240:86;;23138:195;;;;:::o;23339:419::-;23505:4;23543:2;23532:9;23528:18;23520:26;;23592:9;23586:4;23582:20;23578:1;23567:9;23563:17;23556:47;23620:131;23746:4;23620:131;:::i;:::-;23612:139;;23510:248;;;:::o;23764:419::-;23930:4;23968:2;23957:9;23953:18;23945:26;;24017:9;24011:4;24007:20;24003:1;23992:9;23988:17;23981:47;24045:131;24171:4;24045:131;:::i;:::-;24037:139;;23935:248;;;:::o;24189:419::-;24355:4;24393:2;24382:9;24378:18;24370:26;;24442:9;24436:4;24432:20;24428:1;24417:9;24413:17;24406:47;24470:131;24596:4;24470:131;:::i;:::-;24462:139;;24360:248;;;:::o;24614:419::-;24780:4;24818:2;24807:9;24803:18;24795:26;;24867:9;24861:4;24857:20;24853:1;24842:9;24838:17;24831:47;24895:131;25021:4;24895:131;:::i;:::-;24887:139;;24785:248;;;:::o;25039:419::-;25205:4;25243:2;25232:9;25228:18;25220:26;;25292:9;25286:4;25282:20;25278:1;25267:9;25263:17;25256:47;25320:131;25446:4;25320:131;:::i;:::-;25312:139;;25210:248;;;:::o;25464:419::-;25630:4;25668:2;25657:9;25653:18;25645:26;;25717:9;25711:4;25707:20;25703:1;25692:9;25688:17;25681:47;25745:131;25871:4;25745:131;:::i;:::-;25737:139;;25635:248;;;:::o;25889:419::-;26055:4;26093:2;26082:9;26078:18;26070:26;;26142:9;26136:4;26132:20;26128:1;26117:9;26113:17;26106:47;26170:131;26296:4;26170:131;:::i;:::-;26162:139;;26060:248;;;:::o;26314:419::-;26480:4;26518:2;26507:9;26503:18;26495:26;;26567:9;26561:4;26557:20;26553:1;26542:9;26538:17;26531:47;26595:131;26721:4;26595:131;:::i;:::-;26587:139;;26485:248;;;:::o;26739:419::-;26905:4;26943:2;26932:9;26928:18;26920:26;;26992:9;26986:4;26982:20;26978:1;26967:9;26963:17;26956:47;27020:131;27146:4;27020:131;:::i;:::-;27012:139;;26910:248;;;:::o;27164:419::-;27330:4;27368:2;27357:9;27353:18;27345:26;;27417:9;27411:4;27407:20;27403:1;27392:9;27388:17;27381:47;27445:131;27571:4;27445:131;:::i;:::-;27437:139;;27335:248;;;:::o;27589:419::-;27755:4;27793:2;27782:9;27778:18;27770:26;;27842:9;27836:4;27832:20;27828:1;27817:9;27813:17;27806:47;27870:131;27996:4;27870:131;:::i;:::-;27862:139;;27760:248;;;:::o;28014:419::-;28180:4;28218:2;28207:9;28203:18;28195:26;;28267:9;28261:4;28257:20;28253:1;28242:9;28238:17;28231:47;28295:131;28421:4;28295:131;:::i;:::-;28287:139;;28185:248;;;:::o;28439:419::-;28605:4;28643:2;28632:9;28628:18;28620:26;;28692:9;28686:4;28682:20;28678:1;28667:9;28663:17;28656:47;28720:131;28846:4;28720:131;:::i;:::-;28712:139;;28610:248;;;:::o;28864:419::-;29030:4;29068:2;29057:9;29053:18;29045:26;;29117:9;29111:4;29107:20;29103:1;29092:9;29088:17;29081:47;29145:131;29271:4;29145:131;:::i;:::-;29137:139;;29035:248;;;:::o;29289:419::-;29455:4;29493:2;29482:9;29478:18;29470:26;;29542:9;29536:4;29532:20;29528:1;29517:9;29513:17;29506:47;29570:131;29696:4;29570:131;:::i;:::-;29562:139;;29460:248;;;:::o;29714:222::-;29807:4;29845:2;29834:9;29830:18;29822:26;;29858:71;29926:1;29915:9;29911:17;29902:6;29858:71;:::i;:::-;29812:124;;;;:::o;29942:332::-;30063:4;30101:2;30090:9;30086:18;30078:26;;30114:71;30182:1;30171:9;30167:17;30158:6;30114:71;:::i;:::-;30195:72;30263:2;30252:9;30248:18;30239:6;30195:72;:::i;:::-;30068:206;;;;;:::o;30280:129::-;30314:6;30341:20;;:::i;:::-;30331:30;;30370:33;30398:4;30390:6;30370:33;:::i;:::-;30321:88;;;:::o;30415:75::-;30448:6;30481:2;30475:9;30465:19;;30455:35;:::o;30496:311::-;30573:4;30663:18;30655:6;30652:30;30649:2;;;30685:18;;:::i;:::-;30649:2;30735:4;30727:6;30723:17;30715:25;;30795:4;30789;30785:15;30777:23;;30578:229;;;:::o;30813:311::-;30890:4;30980:18;30972:6;30969:30;30966:2;;;31002:18;;:::i;:::-;30966:2;31052:4;31044:6;31040:17;31032:25;;31112:4;31106;31102:15;31094:23;;30895:229;;;:::o;31130:307::-;31191:4;31281:18;31273:6;31270:30;31267:2;;;31303:18;;:::i;:::-;31267:2;31341:29;31363:6;31341:29;:::i;:::-;31333:37;;31425:4;31419;31415:15;31407:23;;31196:241;;;:::o;31443:308::-;31505:4;31595:18;31587:6;31584:30;31581:2;;;31617:18;;:::i;:::-;31581:2;31655:29;31677:6;31655:29;:::i;:::-;31647:37;;31739:4;31733;31729:15;31721:23;;31510:241;;;:::o;31757:132::-;31824:4;31847:3;31839:11;;31877:4;31872:3;31868:14;31860:22;;31829:60;;;:::o;31895:114::-;31962:6;31996:5;31990:12;31980:22;;31969:40;;;:::o;32015:98::-;32066:6;32100:5;32094:12;32084:22;;32073:40;;;:::o;32119:99::-;32171:6;32205:5;32199:12;32189:22;;32178:40;;;:::o;32224:113::-;32294:4;32326;32321:3;32317:14;32309:22;;32299:38;;;:::o;32343:184::-;32442:11;32476:6;32471:3;32464:19;32516:4;32511:3;32507:14;32492:29;;32454:73;;;;:::o;32533:168::-;32616:11;32650:6;32645:3;32638:19;32690:4;32685:3;32681:14;32666:29;;32628:73;;;;:::o;32707:169::-;32791:11;32825:6;32820:3;32813:19;32865:4;32860:3;32856:14;32841:29;;32803:73;;;;:::o;32882:305::-;32922:3;32941:20;32959:1;32941:20;:::i;:::-;32936:25;;32975:20;32993:1;32975:20;:::i;:::-;32970:25;;33129:1;33061:66;33057:74;33054:1;33051:81;33048:2;;;33135:18;;:::i;:::-;33048:2;33179:1;33176;33172:9;33165:16;;32926:261;;;;:::o;33193:348::-;33233:7;33256:20;33274:1;33256:20;:::i;:::-;33251:25;;33290:20;33308:1;33290:20;:::i;:::-;33285:25;;33478:1;33410:66;33406:74;33403:1;33400:81;33395:1;33388:9;33381:17;33377:105;33374:2;;;33485:18;;:::i;:::-;33374:2;33533:1;33530;33526:9;33515:20;;33241:300;;;;:::o;33547:191::-;33587:4;33607:20;33625:1;33607:20;:::i;:::-;33602:25;;33641:20;33659:1;33641:20;:::i;:::-;33636:25;;33680:1;33677;33674:8;33671:2;;;33685:18;;:::i;:::-;33671:2;33730:1;33727;33723:9;33715:17;;33592:146;;;;:::o;33744:96::-;33781:7;33810:24;33828:5;33810:24;:::i;:::-;33799:35;;33789:51;;;:::o;33846:90::-;33880:7;33923:5;33916:13;33909:21;33898:32;;33888:48;;;:::o;33942:149::-;33978:7;34018:66;34011:5;34007:78;33996:89;;33986:105;;;:::o;34097:126::-;34134:7;34174:42;34167:5;34163:54;34152:65;;34142:81;;;:::o;34229:77::-;34266:7;34295:5;34284:16;;34274:32;;;:::o;34312:154::-;34396:6;34391:3;34386;34373:30;34458:1;34449:6;34444:3;34440:16;34433:27;34363:103;;;:::o;34472:307::-;34540:1;34550:113;34564:6;34561:1;34558:13;34550:113;;;34649:1;34644:3;34640:11;34634:18;34630:1;34625:3;34621:11;34614:39;34586:2;34583:1;34579:10;34574:15;;34550:113;;;34681:6;34678:1;34675:13;34672:2;;;34761:1;34752:6;34747:3;34743:16;34736:27;34672:2;34521:258;;;;:::o;34785:320::-;34829:6;34866:1;34860:4;34856:12;34846:22;;34913:1;34907:4;34903:12;34934:18;34924:2;;34990:4;34982:6;34978:17;34968:27;;34924:2;35052;35044:6;35041:14;35021:18;35018:38;35015:2;;;35071:18;;:::i;:::-;35015:2;34836:269;;;;:::o;35111:281::-;35194:27;35216:4;35194:27;:::i;:::-;35186:6;35182:40;35324:6;35312:10;35309:22;35288:18;35276:10;35273:34;35270:62;35267:2;;;35335:18;;:::i;:::-;35267:2;35375:10;35371:2;35364:22;35154:238;;;:::o;35398:233::-;35437:3;35460:24;35478:5;35460:24;:::i;:::-;35451:33;;35506:66;35499:5;35496:77;35493:2;;;35576:18;;:::i;:::-;35493:2;35623:1;35616:5;35612:13;35605:20;;35441:190;;;:::o;35637:180::-;35685:77;35682:1;35675:88;35782:4;35779:1;35772:15;35806:4;35803:1;35796:15;35823:180;35871:77;35868:1;35861:88;35968:4;35965:1;35958:15;35992:4;35989:1;35982:15;36009:180;36057:77;36054:1;36047:88;36154:4;36151:1;36144:15;36178:4;36175:1;36168:15;36195:180;36243:77;36240:1;36233:88;36340:4;36337:1;36330:15;36364:4;36361:1;36354:15;36381:183;36416:3;36454:1;36436:16;36433:23;36430:2;;;36492:1;36489;36486;36471:23;36514:34;36545:1;36539:8;36514:34;:::i;:::-;36507:41;;36430:2;36420:144;:::o;36570:117::-;36679:1;36676;36669:12;36693:117;36802:1;36799;36792:12;36816:117;36925:1;36922;36915:12;36939:117;37048:1;37045;37038:12;37062:117;37171:1;37168;37161:12;37185:102;37226:6;37277:2;37273:7;37268:2;37261:5;37257:14;37253:28;37243:38;;37233:54;;;:::o;37293:106::-;37337:8;37386:5;37381:3;37377:15;37356:36;;37346:53;;;:::o;37405:239::-;37545:34;37541:1;37533:6;37529:14;37522:58;37614:22;37609:2;37601:6;37597:15;37590:47;37511:133;:::o;37650:227::-;37790:34;37786:1;37778:6;37774:14;37767:58;37859:10;37854:2;37846:6;37842:15;37835:35;37756:121;:::o;37883:230::-;38023:34;38019:1;38011:6;38007:14;38000:58;38092:13;38087:2;38079:6;38075:15;38068:38;37989:124;:::o;38119:225::-;38259:34;38255:1;38247:6;38243:14;38236:58;38328:8;38323:2;38315:6;38311:15;38304:33;38225:119;:::o;38350:223::-;38490:34;38486:1;38478:6;38474:14;38467:58;38559:6;38554:2;38546:6;38542:15;38535:31;38456:117;:::o;38579:228::-;38719:34;38715:1;38707:6;38703:14;38696:58;38788:11;38783:2;38775:6;38771:15;38764:36;38685:122;:::o;38813:224::-;38953:34;38949:1;38941:6;38937:14;38930:58;39022:7;39017:2;39009:6;39005:15;38998:32;38919:118;:::o;39043:237::-;39183:34;39179:1;39171:6;39167:14;39160:58;39252:20;39247:2;39239:6;39235:15;39228:45;39149:131;:::o;39286:222::-;39426:34;39422:1;39414:6;39410:14;39403:58;39495:5;39490:2;39482:6;39478:15;39471:30;39392:116;:::o;39514:229::-;39654:34;39650:1;39642:6;39638:14;39631:58;39723:12;39718:2;39710:6;39706:15;39699:37;39620:123;:::o;39749:182::-;39889:34;39885:1;39877:6;39873:14;39866:58;39855:76;:::o;39937:228::-;40077:34;40073:1;40065:6;40061:14;40054:58;40146:11;40141:2;40133:6;40129:15;40122:36;40043:122;:::o;40171:228::-;40311:34;40307:1;40299:6;40295:14;40288:58;40380:11;40375:2;40367:6;40363:15;40356:36;40277:122;:::o;40405:227::-;40545:34;40541:1;40533:6;40529:14;40522:58;40614:10;40609:2;40601:6;40597:15;40590:35;40511:121;:::o;40638:220::-;40778:34;40774:1;40766:6;40762:14;40755:58;40847:3;40842:2;40834:6;40830:15;40823:28;40744:114;:::o;40864:711::-;40903:3;40941:4;40923:16;40920:26;40917:2;;;40949:5;;40917:2;40978:20;;:::i;:::-;41053:1;41035:16;41031:24;41028:1;41022:4;41007:49;41086:4;41080:11;41185:16;41178:4;41170:6;41166:17;41163:39;41130:18;41122:6;41119:30;41103:113;41100:2;;;41231:5;;;;41100:2;41277:6;41271:4;41267:17;41313:3;41307:10;41340:18;41332:6;41329:30;41326:2;;;41362:5;;;;;;41326:2;41410:6;41403:4;41398:3;41394:14;41390:27;41469:1;41451:16;41447:24;41441:4;41437:35;41432:3;41429:44;41426:2;;;41476:5;;;;;;;41426:2;41493:57;41541:6;41535:4;41531:17;41523:6;41519:30;41513:4;41493:57;:::i;:::-;41566:3;41559:10;;40907:668;;;;;;;:::o;41581:122::-;41654:24;41672:5;41654:24;:::i;:::-;41647:5;41644:35;41634:2;;41693:1;41690;41683:12;41634:2;41624:79;:::o;41709:116::-;41779:21;41794:5;41779:21;:::i;:::-;41772:5;41769:32;41759:2;;41815:1;41812;41805:12;41759:2;41749:76;:::o;41831:120::-;41903:23;41920:5;41903:23;:::i;:::-;41896:5;41893:34;41883:2;;41941:1;41938;41931:12;41883:2;41873:78;:::o;41957:122::-;42030:24;42048:5;42030:24;:::i;:::-;42023:5;42020:35;42010:2;;42069:1;42066;42059:12;42010:2;42000:79;:::o
Swarm Source
ipfs://350ed54b53af8aefd7d59a68a32e74cccd6801bb4bcc525777a842572a75e2c7
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.