Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Azuki
Compiler Version
v0.8.4+commit.c7e474f2
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./ERC721A.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; contract Azuki is Ownable, ERC721A, ReentrancyGuard { uint256 public immutable maxPerAddressDuringMint; uint256 public immutable amountForDevs; uint256 public immutable amountForAuctionAndDev; struct SaleConfig { uint32 auctionSaleStartTime; uint32 publicSaleStartTime; uint64 mintlistPrice; uint64 publicPrice; uint32 publicSaleKey; } SaleConfig public saleConfig; mapping(address => uint256) public allowlist; constructor( uint256 maxBatchSize_, uint256 collectionSize_, uint256 amountForAuctionAndDev_, uint256 amountForDevs_ ) ERC721A("Azuki", "AZUKI", maxBatchSize_, collectionSize_) { maxPerAddressDuringMint = maxBatchSize_; amountForAuctionAndDev = amountForAuctionAndDev_; amountForDevs = amountForDevs_; require( amountForAuctionAndDev_ <= collectionSize_, "larger collection size needed" ); } modifier callerIsUser() { // require(msg.sender == tx.origin, "The caller is another contract"); _; } function auctionMint(uint256 quantity) external payable callerIsUser { uint256 _saleStartTime = uint256(saleConfig.auctionSaleStartTime); require( _saleStartTime != 0 && block.timestamp >= _saleStartTime, "sale has not started yet" ); require( totalSupply() + quantity <= amountForAuctionAndDev, "not enough remaining reserved for auction to support desired mint amount" ); require( numberMinted(msg.sender) + quantity <= maxPerAddressDuringMint, "can not mint this many" ); uint256 totalCost = getAuctionPrice(_saleStartTime) * quantity; _safeMint(msg.sender, quantity); refundIfOver(totalCost); } function allowlistMint() external payable callerIsUser { uint256 price = uint256(saleConfig.mintlistPrice); require(price != 0, "allowlist sale has not begun yet"); require(allowlist[msg.sender] > 0, "not eligible for allowlist mint"); require(totalSupply() + 1 <= collectionSize, "reached max supply"); allowlist[msg.sender]--; _safeMint(msg.sender, 1); refundIfOver(price); } function publicSaleMint(uint256 quantity, uint256 callerPublicSaleKey) external payable callerIsUser { SaleConfig memory config = saleConfig; uint256 publicSaleKey = uint256(config.publicSaleKey); uint256 publicPrice = uint256(config.publicPrice); uint256 publicSaleStartTime = uint256(config.publicSaleStartTime); require( publicSaleKey == callerPublicSaleKey, "called with incorrect public sale key" ); require( isPublicSaleOn(publicPrice, publicSaleKey, publicSaleStartTime), "public sale has not begun yet" ); require(totalSupply() + quantity <= collectionSize, "reached max supply"); require( numberMinted(msg.sender) + quantity <= maxPerAddressDuringMint, "can not mint this many" ); _safeMint(msg.sender, quantity); refundIfOver(publicPrice * quantity); } function refundIfOver(uint256 price) private { require(msg.value >= price, "Need to send more ETH."); if (msg.value > price) { (bool success, ) = msg.sender.call{value: msg.value - price}(""); require(success, "Transfer failed."); } } function isPublicSaleOn( uint256 publicPriceWei, uint256 publicSaleKey, uint256 publicSaleStartTime ) public view returns (bool) { return publicPriceWei != 0 && publicSaleKey != 0 && block.timestamp >= publicSaleStartTime; } uint256 public constant AUCTION_START_PRICE = 1 ether; uint256 public constant AUCTION_END_PRICE = 0.15 ether; uint256 public constant AUCTION_PRICE_CURVE_LENGTH = 340 minutes; uint256 public constant AUCTION_DROP_INTERVAL = 20 minutes; uint256 public constant AUCTION_DROP_PER_STEP = (AUCTION_START_PRICE - AUCTION_END_PRICE) / (AUCTION_PRICE_CURVE_LENGTH / AUCTION_DROP_INTERVAL); function getAuctionPrice(uint256 _saleStartTime) public view returns (uint256) { if (block.timestamp < _saleStartTime) { return AUCTION_START_PRICE; } if (block.timestamp - _saleStartTime >= AUCTION_PRICE_CURVE_LENGTH) { return AUCTION_END_PRICE; } else { uint256 steps = (block.timestamp - _saleStartTime) / AUCTION_DROP_INTERVAL; return AUCTION_START_PRICE - (steps * AUCTION_DROP_PER_STEP); } } function endAuctionAndSetupNonAuctionSaleInfo( uint64 mintlistPriceWei, uint64 publicPriceWei, uint32 publicSaleStartTime ) external onlyOwner { saleConfig = SaleConfig( 0, publicSaleStartTime, mintlistPriceWei, publicPriceWei, saleConfig.publicSaleKey ); } function setAuctionSaleStartTime(uint32 timestamp) external onlyOwner { saleConfig.auctionSaleStartTime = timestamp; } function setPublicSaleKey(uint32 key) external onlyOwner { saleConfig.publicSaleKey = key; } function seedAllowlist(address[] memory addresses, uint256[] memory numSlots) external onlyOwner { require( addresses.length == numSlots.length, "addresses does not match numSlots length" ); for (uint256 i = 0; i < addresses.length; i++) { allowlist[addresses[i]] = numSlots[i]; } } // For marketing etc. function devMint(uint256 quantity) external onlyOwner { require( totalSupply() + quantity <= amountForDevs, "too many already minted before dev mint" ); require( quantity % maxBatchSize == 0, "can only mint a multiple of the maxBatchSize" ); uint256 numChunks = quantity / maxBatchSize; for (uint256 i = 0; i < numChunks; i++) { _safeMint(msg.sender, maxBatchSize); } } // // metadata URI string private _baseTokenURI; function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } function setBaseURI(string calldata baseURI) external onlyOwner { _baseTokenURI = baseURI; } function withdrawMoney() external onlyOwner nonReentrant { (bool success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed."); } function setOwnersExplicit(uint256 quantity) external onlyOwner nonReentrant { _setOwnersExplicit(quantity); } function numberMinted(address owner) public view returns (uint256) { return _numberMinted(owner); } function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory) { return ownershipOf(tokenId); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/utils/Context.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "@openzeppelin/contracts/utils/introspection/ERC165.sol"; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints. * * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..). * * Assumes the number of issuable tokens (collection size) is capped and fits in a uint128. * * Does not support burning tokens to address(0). */ contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 private currentIndex = 0; uint256 internal immutable collectionSize; uint256 internal immutable maxBatchSize; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to ownership details // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details. mapping(uint256 => TokenOwnership) private _ownerships; // Mapping owner address to address data mapping(address => AddressData) private _addressData; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev * `maxBatchSize` refers to how much a minter can mint at a time. * `collectionSize_` refers to how many tokens are in the collection. */ constructor( string memory name_, string memory symbol_, uint256 maxBatchSize_, uint256 collectionSize_ ) { require( collectionSize_ > 0, "ERC721A: collection must have a nonzero supply" ); require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero"); _name = name_; _symbol = symbol_; maxBatchSize = maxBatchSize_; collectionSize = collectionSize_; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view override returns (uint256) { return currentIndex; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), "ERC721A: global index out of bounds"); return index; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. * This read function is O(collectionSize). If calling from a separate contract, be sure to test gas first. * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), "ERC721A: owner index out of bounds"); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx = 0; address currOwnershipAddr = address(0); for (uint256 i = 0; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } revert("ERC721A: unable to get token of owner by index"); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view override returns (uint256) { require(owner != address(0), "ERC721A: balance query for the zero address"); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require( owner != address(0), "ERC721A: number minted query for the zero address" ); return uint256(_addressData[owner].numberMinted); } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), "ERC721A: owner query for nonexistent token"); uint256 lowestTokenToCheck; if (tokenId >= maxBatchSize) { lowestTokenToCheck = tokenId - maxBatchSize + 1; } for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } revert("ERC721A: unable to determine the owner of token"); } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, "ERC721A: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721A: approve caller is not owner nor approved for all" ); _approve(to, tokenId, owner); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { require(_exists(tokenId), "ERC721A: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), "ERC721A: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), */ function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ""); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - there must be `quantity` tokens remaining unminted in the total collection. * - `to` cannot be the zero address. * - `quantity` cannot be larger than the max batch size. * * Emits a {Transfer} event. */ function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { uint256 startTokenId = currentIndex; require(to != address(0), "ERC721A: mint to the zero address"); // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering. require(!_exists(startTokenId), "ERC721A: token already minted"); require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high"); _beforeTokenTransfers(address(0), to, startTokenId, quantity); AddressData memory addressData = _addressData[to]; _addressData[to] = AddressData( addressData.balance + uint128(quantity), addressData.numberMinted + uint128(quantity) ); _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 updatedIndex = startTokenId; for (uint256 i = 0; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); require( _checkOnERC721Received(address(0), to, updatedIndex, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); updatedIndex++; } currentIndex = updatedIndex; _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Transfers `tokenId` from `from` to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require( isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved" ); require( prevOwnership.addr == from, "ERC721A: transfer from incorrect owner" ); require(to != address(0), "ERC721A: transfer to the zero address"); _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it. // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls. uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId] = TokenOwnership( prevOwnership.addr, prevOwnership.startTimestamp ); } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } uint256 public nextOwnerToExplicitlySet = 0; /** * @dev Explicitly set `owners` to eliminate loops in future calls of ownerOf(). */ function _setOwnersExplicit(uint256 quantity) internal { uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet; require(quantity > 0, "quantity must be nonzero"); uint256 endIndex = oldNextOwnerToSet + quantity - 1; if (endIndex > collectionSize - 1) { endIndex = collectionSize - 1; } // We know if the last one in the group exists, all in the group exist, due to serial ordering. require(_exists(endIndex), "not enough minted yet for this cleanup"); for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) { if (_ownerships[i].addr == address(0)) { TokenOwnership memory ownership = ownershipOf(i); _ownerships[i] = TokenOwnership( ownership.addr, ownership.startTimestamp ); } } nextOwnerToExplicitlySet = endIndex + 1; } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721A: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. */ function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes * minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. */ function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "mode": "3", "runs": 500 }, "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": true, "libraries": {} }
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"maxBatchSize_","type":"uint256"},{"internalType":"uint256","name":"collectionSize_","type":"uint256"},{"internalType":"uint256","name":"amountForAuctionAndDev_","type":"uint256"},{"internalType":"uint256","name":"amountForDevs_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AUCTION_DROP_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUCTION_DROP_PER_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUCTION_END_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUCTION_PRICE_CURVE_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUCTION_START_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowlist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowlistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"amountForAuctionAndDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountForDevs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"auctionMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"devMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"mintlistPriceWei","type":"uint64"},{"internalType":"uint64","name":"publicPriceWei","type":"uint64"},{"internalType":"uint32","name":"publicSaleStartTime","type":"uint32"}],"name":"endAuctionAndSetupNonAuctionSaleInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_saleStartTime","type":"uint256"}],"name":"getAuctionPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"publicPriceWei","type":"uint256"},{"internalType":"uint256","name":"publicSaleKey","type":"uint256"},{"internalType":"uint256","name":"publicSaleStartTime","type":"uint256"}],"name":"isPublicSaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddressDuringMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"callerPublicSaleKey","type":"uint256"}],"name":"publicSaleMint","outputs":[],"stateMutability":"payable","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":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleConfig","outputs":[{"internalType":"uint32","name":"auctionSaleStartTime","type":"uint32"},{"internalType":"uint32","name":"publicSaleStartTime","type":"uint32"},{"internalType":"uint64","name":"mintlistPrice","type":"uint64"},{"internalType":"uint64","name":"publicPrice","type":"uint64"},{"internalType":"uint32","name":"publicSaleKey","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"numSlots","type":"uint256[]"}],"name":"seedAllowlist","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":"uint32","name":"timestamp","type":"uint32"}],"name":"setAuctionSaleStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"setOwnersExplicit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"key","type":"uint32"}],"name":"setPublicSaleKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMoney","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010005f781e368f8f57624855191a6cb311799208b7a13dd2c2497d4615f7ff9000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000022c400000000000000000000000000000000000000000000000000000000000000c8
Deployed Bytecode
0x0003000000000002000f000000000002000000600310027000000522033001970002000000310355000100000001035500000001002001900000006d0000c13d0000008005000039000000400050043f000000040030008c0000008e0000413d000000000201043b000000e0022002700000053c0020009c000000ab0000a13d0000053d0020009c000000d50000a13d0000053e0020009c000001370000213d000005460020009c0000021d0000213d0000054a0020009c000003220000613d0000054b0020009c000003c50000613d0000054c0020009c0000008e0000c13d000000840030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b000005290020009c0000008e0000213d00000000090200190000002402100370000000000202043b000005290020009c0000008e0000213d000000000a0200190000004402100370000000000b02043b0000006402100370000000000402043b0000052c0040009c0000008e0000213d0000002302400039000000000032004b0000008e0000813d0000000405400039000000000251034f000000000202043b0000052c0020009c000000a50000213d0000001f07200039000005e2077001970000003f07700039000005e207700197000005990070009c000000a50000213d0000008007700039000000400070043f000000800020043f00000000042400190000002404400039000000000034004b0000008e0000213d0000002003500039000000000331034f000005e2042001980000001f0520018f000000a001400039000000520000613d000000a006000039000000000703034f000000007807043c0000000006860436000000000016004b0000004e0000c13d000000000005004b0000005f0000613d000000000343034f0000000304500210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000a00120003900000000000104350000000001090019000900000009001d00000000020a001900080000000a001d00000000030b001900070000000b001d148211f70000040f0000008004000039000000090100002900000008020000290000000703000029000002f90000013d0000012004000039000000400040043f0000000002000416000000000002004b0000008e0000c13d0000001f0230003900000523022001970000012002200039000000400020043f0000001f0530018f000005240630019800000120026000390000007f0000613d000000000701034f000000007807043c0000000004840436000000000024004b0000007b0000c13d000000000005004b0000008c0000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000800030008c000000900000813d00000000010000190000148400010430000000400400043d000005250040009c000000a50000213d000001800100043d000600000001001d000001600100043d000500000001001d000001400100043d000900000001001d000001200100043d000800000001001d0000004001400039000000400010043f000000050200003900000000032404360000052601000041000700000003001d0000000000130435000000400300043d000005250030009c000001560000a13d0000059f01000041000000000010043f0000004101000039000000040010043f000005a00100004100001484000104300000055b0020009c000001260000213d0000056a0020009c000001a00000a13d0000056b0020009c000002880000213d0000056f0020009c000004690000613d000005700020009c000005bc0000613d000005710020009c0000008e0000c13d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b000000000200041a00000529022001970000000003000411000000000032004b000006120000c13d0000000903000039000000000203041a000000020020008c0000032e0000613d0000000202000039000000000023041b000000000001004b000007c40000c13d0000053501000041000000800010043f0000002001000039000000840010043f0000001801000039000000a40010043f000005d201000041000000c40010043f000005a60100004100001484000104300000054d0020009c000001840000a13d0000054e0020009c0000026a0000213d000005520020009c0000039a0000613d000005530020009c0000058e0000613d000005540020009c0000008e0000c13d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000201043b000000800000043f000000a00000043f0000010001000039000000400010043f000000c00000043f000000e00000043f0000000101000039000000000101041a000000000021004b0000069d0000a13d000900000002001d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b0000000902000029000000000112004b000800000000001d000007b60000813d000900000002001d000000000020043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400200043d000005250020009c000000a50000213d000000000101043b0000004003200039000000400030043f000000000301041a00000529013001980000000002120436000000a0033002700000052c033001970000000000320435000009c90000c13d0000000902000029000000000002004b000008b80000613d000000010220008a000000080020006c000001050000813d000007ba0000013d0000055c0020009c000001d50000a13d0000055d0020009c0000029c0000213d000005610020009c000004710000613d000005620020009c000005c70000613d000005630020009c0000008e0000c13d0000000001000416000000000001004b0000008e0000c13d000004b001000039000000800010043f0000057901000041000014830001042e0000053f0020009c000002590000213d000005430020009c000003380000613d000005440020009c000004540000613d000005450020009c0000008e0000c13d000000440030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b000005290020009c0000008e0000213d0000002401100370000000000101043b000900000001001d000005290010009c0000008e0000213d0000000001020019148214380000040f0000000902000029148214490000040f000000000101041a000000ff001001900000000001000039000000010100c039000005960000013d000300000004001d0000004001300039000000400010043f000400000003001d00000000022304360000052701000041000200000002001d0000000000120435000000000100041a00000528021001970000000006000411000000000262019f000000000020041b000000400200043d000005220020009c000005220200804100000040022002100000000003000414000005220030009c0000052203008041000000c003300210000000000223019f00000529051001970000052a012001c70000800d0200003900000003030000390000052b04000041148214780000040f00000001002001900000008e0000613d0000000101000039000000000001041b0000000802000039000000000002041b000000090000006b0000030c0000c13d000000400100043d00000064021000390000053a03000041000000000032043500000044021000390000053b03000041000000000032043500000024021000390000002e03000039000003170000013d000005550020009c000002a90000a13d000005560020009c000003770000613d000005570020009c000004fa0000613d000005580020009c0000008e0000c13d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b000005220010009c0000008e0000213d000000000200041a00000529022001970000000003000411000000000032004b000006120000c13d000000c001100210000005ac011001970000000a02000039000000000302041a000005ad033001970000060e0000013d000005720020009c000002b40000a13d000005730020009c000003820000613d000005740020009c000005280000613d000005750020009c0000008e0000c13d000000640030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b0000052c0020009c0000008e0000213d0000002403100370000000000303043b0000052c0030009c0000008e0000213d0000004401100370000000000101043b000005220010009c0000008e0000213d000000000400041a00000529044001970000000005000411000000000054004b000006120000c13d0000000a04000039000000000504041a0000012006000039000000400060043f000000800000043f000000a00010043f000000c00020043f0000004002200210000000e00030043f0000008003300210000000000223019f0000002001100210000000000112019f0000058802500197000000000121019f000000c0025002700000052202200197000001000020043f000000c002200210000000000121019f000000000014041b000005d401000041000014830001042e000005640020009c000002d70000a13d000005650020009c0000038b0000613d000005660020009c000005770000613d000005670020009c0000008e0000c13d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000402043b0000052c0040009c0000008e0000213d0000002302400039000000000032004b0000008e0000813d0000000405400039000000000251034f000000000202043b0000052c0020009c0000008e0000213d00000024044000390000000006420019000000000036004b0000008e0000213d000000000300041a00000529033001970000000006000411000000000063004b000006120000c13d0000000c03000039000000000703041a000000010070019000000001067002700000007f0660618f0000001f0060008c00000000080000390000000108002039000000000787013f00000001007001900000062b0000c13d000000000726019f000000200070008c00000a1e0000413d000000000030043f000000200060008c000002160000413d0000001f072000390000000507700270000000200020008c00000000070040190000001f066000390000000506600270000000000067004b000002160000813d000005b20660009a000005b20770009a000000000007041b0000000107700039000000000067004b000002120000413d0000001f0020008c00000a1e0000a13d000005e20620019800000b3a0000c13d0000059105000041000000000700001900000b440000013d000005470020009c0000033d0000613d000005480020009c0000045b0000613d000005490020009c0000008e0000c13d000000440030008c0000008e0000413d0000002402100370000000000202043b0000000401100370000000000501043b0000012001000039000000400010043f0000000a03000039000000000303041a0000052204300197000000800040043f00000020043002700000052206400197000000a00060043f00000040043002700000052c04400197000000c00040043f00000080043002700000052c04400197000000e00040043f000000c0033002700000052203300197000001000030043f000000000023004b0000066e0000c13d000000000002004b000002530000613d000000000004004b000002530000613d000900000006001d000700000004001d000800000005001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000090010006c000008af0000813d000000400100043d00000044021000390000058d03000041000000000032043500000024021000390000001d030000390000064b0000013d000005400020009c0000035b0000613d000005410020009c000004620000613d000005420020009c0000008e0000c13d0000000001000416000000000001004b0000008e0000c13d0000000001000412000b00000001001d000a00200000003d0000800501000039000000440300003900000000040004150000000b0440008a0000047b0000013d0000054f0020009c000003af0000613d000005500020009c0000059d0000613d000005510020009c0000008e0000c13d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b000005290010009c0000008e0000213d000000000010043f0000000b01000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a000005960000013d0000056c0020009c000004810000613d0000056d0020009c000005ce0000613d0000056e0020009c0000008e0000c13d0000000a01000039000000000101041a00000040011002700000052c01100198000006310000c13d0000053501000041000000800010043f0000002001000039000000840010043f000000a40010043f000005c301000041000000c40010043f000005a60100004100001484000104300000055e0020009c0000049d0000613d0000055f0020009c000005fd0000613d000005600020009c0000008e0000c13d0000000001000416000000000001004b0000008e0000c13d000000000103001914820fa70000040f148213b20000040f000005960000013d000005590020009c000004e30000613d0000055a0020009c0000008e0000c13d0000000001000416000000000001004b0000008e0000c13d000005af01000041000000800010043f0000057901000041000014830001042e000005760020009c000005020000613d000005770020009c0000008e0000c13d0000000001000416000000000001004b0000008e0000c13d0000000203000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f00000001005001900000062b0000c13d000000800010043f000000000004004b0000068c0000613d000000000030043f000000000001004b000003c30000613d0000052e0200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000002ce0000413d000007aa0000013d000005680020009c000005180000613d000005690020009c0000008e0000c13d000000640030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b000005290020009c0000008e0000213d00000000030200190000002402100370000000000402043b000005290040009c0000008e0000213d00000000020400190000004401100370000000000401043b000800000004001d000000a001000039000000400010043f000000800000043f0000000001030019000900000003001d000700000002001d0000000003040019148211f70000040f0000008004000039000000090100002900000007020000290000000803000029148210da0000040f000000000001004b000005c20000c13d000000400200043d000900000002001d00000535010000410000000000120435000000040120003914820fdb0000040f00000009020000290000000001210049000005220010009c00000522010080410000006001100210000005220020009c00000522020080410000004002200210000000000121019f0000148400010430000000080000006b0000061b0000c13d000000400100043d00000064021000390000053703000041000000000032043500000044021000390000053803000041000000000032043500000024021000390000002703000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c0000052201008041000000400110021000000539011001c700001484000104300000000001000416000000000001004b0000008e0000c13d000000000100041a00000529011001970000000002000411000000000021004b000006120000c13d0000000902000039000000000102041a000000020010008c000006d00000c13d0000053501000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000005d301000041000000c40010043f000005a60100004100001484000104300000000001000416000000000001004b0000008e0000c13d00000008010000390000046d0000013d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000402043b0000000105000039000000000205041a000000000042004b000006620000a13d0000000c07000039000000000207041a000000010820019000000001062002700000007f0660618f0000001f0060008c00000000090000390000000109002039000000000992013f00000001009001900000062b0000c13d000000800060043f000000000008004b000007560000613d000000000070043f000000000006004b000008be0000c13d000000a0020000390000075c0000013d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000601043b000005290060009c0000008e0000213d000000000100041a00000529021001970000000005000411000000000052004b000006120000c13d000000000006004b000007610000c13d0000053501000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f0000057b01000041000000c40010043f0000057c01000041000000e40010043f0000057d0100004100001484000104300000000001000416000000000001004b0000008e0000c13d0000000001000412000d00000001001d000c00400000003d0000800501000039000000440300003900000000040004150000000d0440008a0000047b0000013d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b148213da0000040f000005960000013d000000240030008c0000008e0000413d0000000401100370000000000201043b0000000a01000039000000000101041a00000522011001980000067a0000c13d00000080010000390000004402100039000005bd030000410000000000320435000000240210003900000018030000390000064b0000013d0000000001000416000000000001004b0000008e0000c13d0000000a01000039000000000101041a0000052202100197000000800020043f00000020021002700000052202200197000000a00020043f00000040021002700000052c02200197000000c00020043f00000080021002700000052c02200197000000e00020043f000000c0011002700000052201100197000001000010043f000005ab01000041000014830001042e0000000001000416000000000001004b0000008e0000c13d0000000303000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f00000001005001900000062b0000c13d000000800010043f000000000004004b0000068c0000613d000000000030043f000000000001004b000007a00000c13d000000a0010000390000068f0000013d000000440030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000402043b0000052c0040009c0000008e0000213d0000002302400039000000000032004b0000008e0000813d0000000402400039000000000221034f000000000202043b0000052c0020009c000000a50000213d000000000705001900000005052002100000003f065000390000059a06600197000005990060009c000000a50000213d0000008006600039000000400060043f000000800020043f00000024044000390000000005450019000000000035004b0000008e0000213d000000000002004b000003f00000613d0000000005000019000000000641034f000000000606043b000005290060009c0000008e0000213d0000002007700039000000000067043500000020044000390000000105500039000000000025004b000003e60000413d0000002402100370000000000402043b0000052c0040009c0000008e0000213d0000002302400039000000000032004b00000000050000190000059b050080410000059b02200197000000000002004b00000000060000190000059b060040410000059b0020009c000000000605c019000000000006004b0000008e0000c13d0000000402400039000000000221034f000000000202043b0000052c0020009c000000a50000213d00000005052002100000003f065000390000059a06600197000000400700043d0000000006670019000700000007001d000000000076004b000000000700003900000001070040390000052c0060009c000000a50000213d0000000100700190000000a50000c13d000000400060043f00000007060000290000000006260436000600000006001d00000024044000390000000005450019000000000035004b0000008e0000213d000000000002004b000004260000613d00000000030000190000000705000029000000000641034f000000000606043b0000002005500039000000000065043500000020044000390000000103300039000000000023004b0000041e0000413d000000000100041a00000529011001970000000002000411000000000021004b00000c8d0000c13d00000007010000290000000002010433000000800100043d000000000021004b00000c980000c13d000000000001004b000005c20000613d000000000200001900000007010000290000000001010433000000000021004b00000c870000a13d0000000501200210000900000002001d00000006021000290000000002020433000800000002001d000000a00110003900000000010104330000052901100197000000000010043f0000000b01000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f000000010020019000000009020000290000008e0000613d000000000101043b0000000803000029000000000031041b0000000102200039000000800100043d000000000012004b000004330000413d000005c20000013d0000000001000416000000000001004b0000008e0000c13d000000000103001914820fa70000040f148211cf0000040f000005960000013d0000000001000416000000000001004b0000008e0000c13d0000058e01000041000000800010043f0000057901000041000014830001042e0000000001000416000000000001004b0000008e0000c13d00004fb001000039000000800010043f0000057901000041000014830001042e0000000001000416000000000001004b0000008e0000c13d0000000101000039000000000101041a000000800010043f0000057901000041000014830001042e0000000001000416000000000001004b0000008e0000c13d0000000001000412000f00000001001d000e00000000003d0000800501000039000000440300003900000000040004150000000f0440008a000000050440021000000578020000411482145a0000040f000000800010043f0000057901000041000014830001042e000000440030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b000700000002001d000005290020009c0000008e0000213d0000002401100370000000000101043b000400000001001d0000000701000029000000000001004b000006e80000c13d0000053501000041000000800010043f0000002001000039000000840010043f0000002b01000039000000a40010043f000005ce01000041000000c40010043f000005cf01000041000000e40010043f0000057d010000410000148400010430000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000201043b000000c001000039000000400010043f000000800000043f000000a00000043f0000000101000039000000000101041a000000000021004b000006560000a13d000900000002001d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b0000000902000029000000000112004b000800000000001d000007b10000813d000900000002001d000000000020043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400200043d000005250020009c000000a50000213d000000000101043b0000004003200039000000400030043f000000000101041a000000a0031002700000052c033001970000002004200039000000000034043500000529011001980000000000120435000005960000c13d0000000902000029000000000002004b000008b80000613d000000010220008a000000080020006c000004c10000813d000007ba0000013d0000000001000416000000000001004b0000008e0000c13d000000000100041a00000529021001970000000005000411000000000052004b000006120000c13d0000052801100197000000000010041b0000000001000414000005220010009c0000052201008041000000c0011002100000057a011001c70000800d0200003900000003030000390000052b040000410000000006000019148214780000040f0000000100200190000005c20000c13d0000008e0000013d0000000001000416000000000001004b0000008e0000c13d000000000100041a0000052901100197000000800010043f0000057901000041000014830001042e000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b000005dd001001980000008e0000c13d0000058801100197000005de0010009c00000000020000390000000102006039000005df0010009c00000001022061bf000005e00010009c00000001022061bf000005e10010009c00000001022061bf000000800020043f0000057901000041000014830001042e000000640030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000004402100370000000000302043b0000002402100370000000000202043b0000000401100370000000000101043b1482141f0000040f000000000001004b0000000001000039000000010100c039000005960000013d000000440030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b000700000002001d000005290020009c0000008e0000213d0000002401100370000000000201043b000000c001000039000000400010043f000000800000043f000000a00000043f0000000101000039000000000101041a000600000002001d000000000021004b000006560000a13d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000060110006b000800000000001d000005540000413d000800010010003e000008b80000613d000000060010006c000007ba0000813d0000000602000029000900000002001d000000000020043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400200043d000005250020009c000000a50000213d000000000101043b0000004003200039000000400030043f000000000101041a000000a0031002700000052c03300197000000200420003900000000003404350000052903100198000000000032043500000a2a0000c13d0000000902000029000000000002004b000008b80000613d000000010220008a000000080020006c000005550000813d000007ba0000013d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b0000000102000039000000000202041a000000000012004b000005cb0000213d0000053501000041000000800010043f0000002001000039000000840010043f0000002301000039000000a40010043f000005b301000041000000c40010043f000005b401000041000000e40010043f0000057d010000410000148400010430000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b148214040000040f000000400200043d0000000000120435000005220020009c000005220200804100000040012002100000057e011001c7000014830001042e000000440030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000402100370000000000202043b000900000002001d000005290020009c0000008e0000213d0000002401100370000000000201043b000000000002004b0000000001000039000000010100c039000800000002001d000000000012004b0000008e0000c13d0000000002000411000000090020006b000008740000c13d0000053501000041000000800010043f0000002001000039000000840010043f0000001a01000039000000a40010043f000005a501000041000000c40010043f000005a60100004100001484000104300000000001000416000000000001004b0000008e0000c13d000000000103001914820fb30000040f148211f70000040f000000400100043d000005220010009c00000522010080410000004001100210000014830001042e0000000001000416000000000001004b0000008e0000c13d000005b101000041000000800010043f0000057901000041000014830001042e000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000301043b000000000100041a00000529021001970000000001000411000000000012004b000006120000c13d000800000002001d000005e3013001670000000102000039000000000202041a000000000012004b000008b80000213d000700000002001d000900000003001d0000057801000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d00000007030000290000000902300029000000000101043b000000000012004b000009160000a13d000000400100043d0000006402100039000005c80300004100000000003204350000004402100039000005c903000041000003140000013d000000240030008c0000008e0000413d0000000002000416000000000002004b0000008e0000c13d0000000401100370000000000101043b000005220010009c0000008e0000213d000000000200041a00000529022001970000000003000411000000000032004b000006120000c13d0000000a02000039000000000302041a000005b003300197000000000113019f000000000012041b000005ae01000041000014830001042e0000053501000041000000800010043f0000002001000039000000840010043f000000a40010043f0000059c01000041000000c40010043f000005a6010000410000148400010430000000030b00002900000000030b04330000052c0030009c0000000509000039000000040a000029000000a50000213d0000000202000039000000000402041a000000010540019000000001044002700000007f0440618f0000001f0040008c00000000060000390000000106002039000000000065004b000006a90000613d0000059f01000041000000000010043f0000002201000039000000040010043f000005a0010000410000148400010430000800000001001d00000000010004110000052901100197000900000001001d000000000010043f0000000b01000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a000000000001004b000007050000c13d000000400100043d0000004402100039000005c203000041000000000032043500000024021000390000001f03000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c0000052201008041000000400110021000000536011001c700001484000104300000053501000041000000c00010043f0000002001000039000000c40010043f0000002a01000039000000e40010043f000005a701000041000001040010043f000005a801000041000001240010043f000005d50100004100001484000104300000053501000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f0000058f01000041000000c40010043f0000059001000041000000e40010043f0000057d0100004100001484000104300000053501000041000001200010043f0000002001000039000001240010043f0000002501000039000001440010043f0000057f01000041000001640010043f0000058001000041000001840010043f00000581010000410000148400010430000900000001001d000800000002001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000090010006c0000076d0000813d000000400100043d000003940000013d000005e401200197000000a00010043f000000c001000039000000400010043f0000008002000039000900000001001d14820fc50000040f00000009020000290000000001210049000005220010009c00000522010080410000006001100210000005220020009c00000522020080410000004002200210000000000121019f000014830001042e0000053501000041000001000010043f0000002001000039000001040010043f0000002a01000039000001240010043f000005a701000041000001440010043f000005a801000041000001640010043f000005a9010000410000148400010430000000000534019f000000200050008c000006c40000413d000000000020043f000000200040008c000006bd0000413d0000001f053000390000000505500270000000200030008c00000000050040190000001f044000390000000504400270000000000045004b000006bd0000813d0000052d0440009a0000052d0550009a000000000005041b0000000105500039000000000045004b000006b90000413d0000001f0030008c000006c40000a13d000005e2063001980000092e0000c13d00000020050000390000052e040000410000093a0000013d000000000003004b0000000004000019000009460000613d0000000304300210000005e30440027f000005e30440016700000007050000290000000005050433000000000445016f0000000103300210000000000434019f000009460000013d0000000201000039000000000012041b000005a1010000410000000000100443000000000100041000000004001004430000000001000414000005220010009c0000052201008041000000c001100210000005a2011001c70000800a020000391482147d0000040f000000010020019000000ee40000613d000000400200043d000000000301043b00000000010004140000000004000411000000040040008c000008a40000c13d00000001020000390000000001000031000009860000013d000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a0000058701100197000000040010006c0000090c0000a13d0000000101000039000000000101041a000600000001001d000000000001004b000009d30000c13d000000400100043d0000006402100039000005cc0300004100000000003204350000004402100039000005cd03000041000001800000013d0000000102000039000000000302041a000005e30030009c000008b80000613d000700000003001d000600000002001d0000057801000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000070010006b00000a170000813d0000000901000029000000000010043f0000000b01000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000201041a000000000002004b000008b80000613d000000010220008a000000000021041b000000400100043d000700000001001d000005860010009c000000a50000213d00000007020000290000002001200039000000400010043f0000000000020435000000090000006b00000ab10000613d0000000101000039000000000101041a000500000001001d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000000001004b00000ca20000c13d000000400100043d0000006402100039000005c60300004100000000003204350000004402100039000005c703000041000009120000013d000005e402200197000000a00020043f000000c002000039000000400020043f000000000006004b000008d50000c13d0000002001200039000000400010043f0000000000020435000000400100043d000006910000013d0000052801100197000000000161019f000000000010041b0000000001000414000005220010009c0000052201008041000000c0011002100000057a011001c70000800d0200003900000003030000390000052b04000041000004f60000013d000000010200008a000000080220014f0000000101000039000000000301041a000000000023004b000008b80000213d000700000003001d000600000002001d000500000001001d000005780100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d00000007030000290000000802300029000000000101043b000000000012004b00000a370000a13d000000400100043d0000008402100039000005b90300004100000000003204350000006402100039000005ba0300004100000000003204350000004402100039000005bb03000041000000000032043500000024021000390000004803000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c00000522010080410000004001100210000005bc011001c70000148400010430000005310200004100000000040000190000000003040019000000000402041a000000a005300039000000000045043500000001022000390000002004300039000000000014004b000007a20000413d000005920130009a000005930010009c000000a50000413d0000005f01300039000005e20110019700000080011000390000068f0000013d000800010010003e000008b80000613d000000000021004b000004c10000413d000007ba0000013d000800010010003e000008b80000613d000000000021004b000001050000413d000000400100043d0000006402100039000005db0300004100000000003204350000004402100039000005dc03000041000000000032043500000024021000390000002f03000039000003170000013d0000000802000039000000000302041a000005e302100167000700000003001d000000000023004b000008b80000213d000900070010002e000008b80000613d0000057801000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000000001004b000008b80000613d0000000902000029000000010220008a000000010110008a000000000012004b00000000020180190000000101000039000000000101041a000600000002001d000000000012004b00000b550000813d0000000701000029000000060010006c000007f30000a13d000000060100002900000001011000390000000802000039000000000012041b00000009010000390000000102000039000000000021041b000005c20000013d000700000001001d000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a00000529001001980000086c0000c13d000000400100043d000005250010009c000000a50000213d0000004002100039000000400020043f0000002002100039000000000002043500000000000104350000000101000039000000000101041a000000070010006c00000ee50000a13d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000070110006b000800000000001d000008270000413d000800010010003e000008b80000613d000000070010006c000007ba0000813d0000000702000029000900000002001d000000000020043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400200043d000005250020009c000000a50000213d000000000101043b0000004003200039000000400030043f000000000301041a00000529013001980000000004120436000000a0023002700000052c022001970000000000240435000008490000c13d0000000902000029000000000002004b000008b80000613d000000010220008a000000080020006c000008280000813d000007ba0000013d000000400400043d000005250040009c000000a50000213d0000004003400039000000400030043f000900000004001d0000000001140436000800000001001d00000000002104350000000701000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000090200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000008030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b0000000701000029000000010010003a000008b80000413d0000000701000029000000060010006c0000000101100039000007f30000413d000007eb0000013d000000000020043f0000000701000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b0000000902000029000000000020043f000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000201041a000005e4022001970000000803000029000000000232019f000000000021041b000000400100043d0000000000310435000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f000005a3011001c70000800d020000390000000303000039000005a40400004100000000050004110000000906000029000004f60000013d000005220020009c00000522020080410000004002200210000005220010009c0000052201008041000000c001100210000000000121019f000000000003004b0000097e0000c13d0000000002040019000009810000013d000000010200008a000000080220014f0000000101000039000500000001001d000000000101041a000600000002001d000900000001001d000000000021004b00000a030000a13d0000059f01000041000000000010043f0000001101000039000000040010043f000005a0010000410000148400010430000005910700004100000000080000190000000002080019000000000807041a000000a009200039000000000089043500000001077000390000002008200039000000000068004b000008c00000413d000005920620009a000005930060009c000000a50000413d0000005f02200039000005e2062001970000008002600039000000800700043d000000400020043f000000000007004b00000a680000c13d000005980060009c000000a50000213d0000075c0000013d000000000004004b00000a6d0000c13d0000004001200039000000400010043f000000000152043600000596030000410000000000310435000000400300043d0000002005300039000000800600043d000000000006004b0000000004560019000008ec0000613d00000000070000190000000008570019000000a009700039000000000909043300000000009804350000002007700039000000000067004b000008e30000413d000008ec0000a13d00000000000404350000000005020433000000000005004b0000000002450019000008fa0000613d000000000600001900000000074600190000000008610019000000000808043300000000008704350000002006600039000000000056004b000008f10000413d000008fa0000a13d00000000000204350000000001320049000000200210008a00000000002304350000001f01100039000005e2011001970000000004310019000000000014004b000000000100003900000001010040390000052c0040009c000000a50000213d0000000100100190000000a50000c13d00000000020400190000000001040019000000400020043f0000000002030019000006910000013d000000400100043d0000006402100039000005ca0300004100000000003204350000004402100039000005cb03000041000000000032043500000024021000390000002203000039000003170000013d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000000001004b00000aa10000c13d0000059f01000041000000000010043f0000001201000039000000040010043f000005a00100004100001484000104300000052e040000410000002005000039000000010760008a00000005077002700000052f0770009a0000000008b500190000000008080433000000000084041b00000020055000390000000104400039000000000074004b000009330000c13d000000000036004b000009440000813d0000000306300210000000f80660018f000005e30660027f000005e3066001670000000005b500190000000005050433000000000565016f000000000054041b000000010330021000000001043001bf000000000042041b00000000020a04330000052c0020009c000000a50000213d0000000303000039000000000403041a000000010040019000000001034002700000007f0330618f0000001f0030008c00000000050000390000000105002039000000000454013f00000001004001900000062b0000c13d000000000423019f000000200040008c000009710000413d0000000304000039000000000040043f000000200030008c0000096a0000413d0000001f042000390000000504400270000000200020008c00000000040040190000001f033000390000000503300270000000000034004b0000096a0000813d000005300330009a000005300440009a000000000004041b0000000104400039000000000034004b000009660000413d0000001f0020008c000009710000a13d000005e20520019800000abb0000c13d0000002004000039000005310300004100000ac80000013d000000000002004b0000000003000019000000090500002900000ad60000613d0000000303200210000005e30330027f000005e30330016700000002040000290000000004040433000000000334016f0000000102200210000000000323019f00000ad60000013d0000052a011001c700008009020000390000000005000019148214780000040f00020000000103550000006001100270000005220010019d0000052201100197000000000001004b000009930000c13d000000400300043d000005220030009c0000052201000041000000000103401900000040011002100000000100200190000009bc0000613d00000001020000390000000903000039000000000023041b000014830001042e0000052c0010009c000000a50000213d0000001f04100039000005e2044001970000003f04400039000005e205400197000000400400043d0000000005540019000000000045004b000000000600003900000001060040390000052c0050009c000000a50000213d0000000100600190000000a50000c13d000000400050043f0000000006140436000005e2031001980000001f0410018f00000000013600190000000205000367000009ae0000613d000000000705034f000000007807043c0000000006860436000000000016004b000009aa0000c13d000000000004004b000009880000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000009880000013d00000044023000390000058b0400004100000000004204350000002402300039000000100400003900000000004204350000053502000041000000000023043500000004023000390000002003000039000000000032043500000536011001c70000148400010430000000400300043d000000000113043600000000020204330000052c022001970000000000210435000005220030009c00000522030080410000004001300210000005aa011001c7000014830001042e0000000002000019000900000000001d000500000000001d000009dc0000013d0000000802000029000900000003001d0000000102200039000000060020006c000006fe0000813d000800000002001d000000000020043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400200043d000005250020009c000000a50000213d000000000101043b0000004003200039000000400030043f000000000101041a000000a0031002700000052c03300197000000200420003900000000003404350000052901100198000000000012043500000000030100190000000903006029000000070130014f0000052900100198000009d70000c13d0000000502000029000000040020006c0000000001020019000000080200002900000bc20000613d000500010010003e000009d80000c13d000008b80000013d0000057801000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d00000009030000290000000802300029000000000101043b000000000012004b00000afa0000a13d000000400100043d0000004402100039000005be030000410000000000320435000000240210003900000012030000390000064b0000013d000000000002004b000000000400001900000b520000613d0000000304200210000005e30440027f000005e3044001670000002005500039000000000151034f000000000101043b000000000441016f000000010120021000000b510000013d00000007010000290000052901100197000900000003001d000800000001001d000000000031004b00000b070000c13d000000400100043d0000006402100039000005d90300004100000000003204350000004402100039000005da03000041000009120000013d0000000001000411000705290010019c00000afd0000613d0000000701000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a0000008002100270000400000002001d000000060020006c000008b80000213d0000057801000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d00000004030000290000000802300029000000000101043b000000000012004b00000d390000a13d000000400100043d00000044021000390000058c030000410000000000320435000000240210003900000016030000390000064b0000013d000000000004004b00000a6d0000c13d000005970060009c000000a50000213d000008d70000013d000000000531034f000000000604001900000000030000190000000001030019000000010330003a000008b80000613d000000090060008c0000000a0660011a00000a700000213d000005940010009c000000a50000213d000005e2071001970000005f01700039000005e2081001970000000001280019000000000081004b000000000800003900000001080040390000052c0010009c000000a50000213d0000000100800190000000a50000c13d000000400010043f00000000013204360000002008700039000005e2078001980000001f0680018f00000a8f0000613d00000000077100190000000008010019000000005905043c0000000008980436000000000078004b00000a8b0000c13d000000000006004b000000000003004b000008b80000613d000000010330008a0000000005020433000000000035004b00000c870000a13d0000000005130019000000090040008c0000000a6440011a000000f80660021000000000070504330000059507700197000000000676019f00000596066001c7000000000065043500000a900000213d000008dc0000013d000600000001001d0001000910100101000000000001004b00000b300000c13d0000000902000029000000060020006b0000000801000029000005c20000213d000000000001004b00000bc90000c13d000000400100043d000005860010009c000000a50000213d0000002002100039000000400020043f0000000000010435000000400100043d0000006402100039000005c00300004100000000003204350000004402100039000005c103000041000000000032043500000024021000390000002103000039000003170000013d00000531030000410000002004000039000000010650008a0000000506600270000005320660009a000000040800002900000000078400190000000007070433000000000073041b00000020044000390000000103300039000000000063004b00000ac10000c13d000000000025004b00000ad20000813d0000000305200210000000f80550018f000005e30550027f000005e30550016700000004044000290000000004040433000000000454016f000000000043041b000000010220021000000001032001bf000000090500002900000005090000390000000302000039000000000032041b0000000803000029000000a00030043f000000800050043f0000000902000039000000000012041b000000c00030043f0000000501000029000001000010043f0000000602000029000000e00020043f000000000051004b00000ae80000a13d000000400100043d00000044021000390000053403000041000002550000013d0000014000000443000001600010044300000020010000390000018000100443000001a0002004430000004002000039000001c000200443000001e000300443000000600200003900000200002004430000022000300443000000800200003900000240002004430000026000500443000001000010044300000120009004430000053301000041000014830001042e0000000001000411000405290010019c00000b5f0000c13d000000400100043d0000006402100039000005b70300004100000000003204350000004402100039000005b803000041000000000032043500000024021000390000003103000039000003170000013d0000000002000411000000090020006c00000b990000c13d0000000601000029000000000010043f0000000601000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000201041a000005280220019700000008022001af000000000021041b000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d020000390000000403000039000005d804000041000000090500002900000007060000290000000607000029148214780000040f0000000100200190000005c20000c13d0000008e0000013d000000400100043d0000006402100039000005c40300004100000000003204350000004402100039000005c503000041000000000032043500000024021000390000002c03000039000003170000013d000005910500004100000000070000190000000008470019000000000881034f000000000808043b000000000085041b00000001055000390000002007700039000000000067004b00000b3c0000413d000000000026004b00000b4f0000813d0000000306200210000000f80660018f000005e30660027f000005e3066001670000000004470019000000000141034f000000000101043b000000000161016f000000000015041b00000001010000390000000104200210000000000414019f000000000043041b000005ae01000041000014830001042e000000400100043d0000006402100039000005d00300004100000000003204350000004402100039000005d103000041000000000032043500000024021000390000002603000039000003170000013d0000000401000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a0000008002100270000900000002001d000000060020006c000008b80000213d0000057801000041000000000010044300000000010004120000000400100443000000400100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d00000009030000290000000802300029000000400300043d000300000003001d000000000101043b000000000012004b00000e1a0000a13d000000030300002900000044013000390000058c02000041000000000021043500000024013000390000001602000039000000000021043500000535010000410000000000130435000000040130003900000020020000390000000000210435000005220030009c0000052203008041000000400130021000000536011001c700001484000104300000000901000029000000000010043f0000000701000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b00000000020004110000052902200197000000000020043f000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000000101043b000000000101041a000000ff0010019000000b0a0000c13d000000400100043d0000006402100039000005d60300004100000000003204350000004402100039000005d703000041000000000032043500000024021000390000003903000039000003170000013d000000400100043d0000000000210435000005220010009c000005220100804100000040011002100000057e011001c7000014830001042e000000010200008a000000060120014f000405870010019b000200000000001d000000400100043d000500000001001d000005860010009c000000a50000213d00000005020000290000002001200039000000400010043f00000000000204350000000101000039000000000101041a000900000001001d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000060010006c0000074f0000413d0000000801000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400300043d000005250030009c000000a50000213d000000000101043b0000004002300039000000400020043f000000000201041a00000020043000390000008001200270000000000014043500000587042001970000000000430435000000040040006c000008b80000213d000000040010006c000008b80000213d000000400500043d000005250050009c000000a50000213d00000006022000290000004003500039000000400030043f0000058702200197000700000005001d000000000225043600000006011000290000058701100197000300000002001d00000000001204350000000801000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000070200002900000000020204330000058702200197000000030300002900000000030304330000008003300210000000000223019f000000000101043b000000000021041b000000400200043d000005250020009c000000a50000213d0000004001200039000000400010043f0000000801000029000300000002001d0000000001120436000700000001001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000000000101043b0000052c01100197000000070200002900000000001204350000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000030200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000007030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b00000000020000190000000907000029000700000002001d000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d0200003900000004030000390000058a0400004100000000050000190000000806000029000900000007001d148214780000040f00000001002001900000008e0000613d00000008010000290000000902000029000000050300002914820fe80000040f000000000001004b000002fc0000613d0000000907000029000000010770003a000008b80000613d00000007020000290000000102200039000000060020006c00000c5e0000413d0000000101000039000000000071041b00000002020000290000000102200039000200000002001d000000010020006c00000bcd0000413d000005c20000013d0000059f01000041000000000010043f0000003201000039000000040010043f000005a0010000410000148400010430000000400100043d00000044021000390000059c030000410000000000320435000005350200004100000000002104350000002402100039000000200300003900000000003204350000000402100039000006500000013d000000400100043d00000064021000390000059d03000041000000000032043500000044021000390000059e03000041000000000032043500000024021000390000002803000039000003170000013d0000000901000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400300043d000005250030009c000000a50000213d000000000101043b0000004002300039000000400020043f000000000201041a00000020043000390000008001200270000000000014043500000587022001970000000000230435000005870020009c000008b80000613d000005870010009c000008b80000613d000000400300043d000400000003001d000005250030009c000000a50000213d000000010220003900000004040000290000004003400039000000400030043f00000000022404360000000101100039000300000002001d00000000001204350000000901000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000040200002900000000020204330000058702200197000000030300002900000000030304330000008003300210000000000223019f000000000101043b000000000021041b000000400100043d000400000001001d000005250010009c000000a50000213d00000004020000290000004001200039000000400010043f00000009010000290000000001120436000900000001001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000000000101043b0000052c01100197000000090200002900000000001204350000000501000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000040200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000009030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d0200003900000004030000390000058a04000041000000000500001900000000060004110000000507000029148214780000040f00000001002001900000008e0000613d00000000010004110000000502000029000000070300002914820fe80000040f000000000001004b000002fc0000613d0000000501000029000000010110003a0000000102000039000008b80000613d000000000012041b0000000001000416000000080310006c00000eef0000813d000000400100043d0000004402100039000005bf0300004100000a640000013d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000305af00000045000000000101043b000000090110006c00000d4f0000413d0003058e0000004500004faf0010008c00000d4f0000213d0000ffff0110018f000004b00110011a000005b5011000d1000305b6001000a2000000010200008a00000003012000fa000000080010006c000008b80000413d000000400100043d000400000001001d000005860010009c000000a50000213d00000004020000290000002001200039000000400010043f00000000000204350000000101000039000000000101041a000900000001001d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000080010006c0000074f0000413d0000000701000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400300043d000005250030009c000000a50000213d000000000101043b0000004002300039000000400020043f000000000201041a0000002004300039000000800120027000000000001404350000058704200197000000000043043500000006030000290000058703300197000000000034004b000008b80000213d000000000031004b000008b80000213d000000400300043d000600000003001d000005250030009c000000a50000213d000000080220002900000006050000290000004003500039000000400030043f0000058702200197000000000225043600000008011000290000058701100197000200000002001d00000000001204350000000701000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000060200002900000000020204330000058702200197000000020300002900000000030304330000008003300210000000000223019f000000000101043b000000000021041b000000400100043d000600000001001d000005250010009c000000a50000213d00000006020000290000004001200039000000400010043f00000007010000290000000001120436000700000001001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000000000101043b0000052c01100197000000070200002900000000001204350000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000060200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000007030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b000000080000006b00000e0a0000613d000700000000001d000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d0200003900000004030000390000058a04000041000000000500001900000000060004110000000907000029148214780000040f00000001002001900000008e0000613d00000000010004110000000902000029000000040300002914820fe80000040f000000000001004b000002fc0000613d0000000901000029000900010010003e0000000801000029000008b80000613d0000000702000029000700010020003d000000070010006b00000de90000413d000000030200002900000008012000b900000001020000390000000903000029000000000032041b0000000002000416000000000312004b00000d350000413d000000400100043d000005c30000a13d00000000020004140000000004000411000000040040008c00000f350000c13d000000000100003100000f450000013d0000000301000029000005860010009c000000a50000213d00000003020000290000002001200039000000400010043f00000000000204350000000101000039000000000101041a000900000001001d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f000000010020019000000ee40000613d000000000101043b000000080010006c0000074f0000413d0000000401000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000400300043d000005250030009c000000a50000213d000000000101043b0000004002300039000000400020043f000000000201041a0000002004300039000000800120027000000000001404350000058704200197000000000043043500000006030000290000058703300197000000000034004b000008b80000213d000000000031004b000008b80000213d000000400300043d000600000003001d000005250030009c000000a50000213d000000080220002900000006050000290000004003500039000000400030043f0000058702200197000000000225043600000008011000290000058701100197000200000002001d00000000001204350000000401000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000060200002900000000020204330000058702200197000000020300002900000000030304330000008003300210000000000223019f000000000101043b000000000021041b000000400100043d000600000001001d000005250010009c000000a50000213d00000006020000290000004001200039000000400010043f00000004010000290000000001120436000400000001001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f000000010020019000000ee40000613d000000000101043b0000052c01100197000000040200002900000000001204350000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f00000001002001900000008e0000613d000000060200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000004030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b000000080000006b00000ed00000613d000600000000001d000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d0200003900000004030000390000058a04000041000000000500001900000000060004110000000907000029148214780000040f00000001002001900000008e0000613d00000000010004110000000902000029000000030300002914820fe80000040f000000000001004b000002fc0000613d0000000901000029000900010010003e000008b80000613d00000006020000290000000102200039000600000002001d000000080020006c00000eaf0000413d00000001010000390000000902000029000000000021041b000000010200008a00000007012000fa000000080010006c000008b80000413d000000070200002900000008012000b90000000002000416000000000312004b00000d350000413d000000400100043d000005c30000a13d00000000020004140000000004000411000000040040008c00000f630000c13d000000000100003100000f730000013d000000000001042f000000400100043d0000006402100039000005a80300004100000000003204350000004402100039000005a703000041000000000032043500000024021000390000002a03000039000003170000013d000000400100043d000005c30000a13d00000000020004140000000004000411000000040040008c00000ef70000c13d000000000100003100000f070000013d000005220010009c00000522010080410000004001100210000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c700008009020000390000000005000019148214780000040f000600010020019300020000000103550000006001100270000005220010019d0000052201100197000000000001004b00000f0c0000c13d000000400100043d000000060200002900000f9f0000013d0000052c0010009c000000a50000213d0000001f03100039000005e2033001970000003f03300039000005e204300197000000400300043d0000000004430019000000000034004b000000000500003900000001050040390000052c0040009c000000a50000213d0000000100500190000000a50000c13d000000400040043f0000000005130436000005e2021001980000001f0310018f0000000001250019000000020400036700000f270000613d000000000604034f000000006706043c0000000005750436000000000015004b00000f230000c13d000000000003004b00000f090000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f000000000021043500000f090000013d000005220010009c00000522010080410000004001100210000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c700008009020000390000000005000019148214780000040f000500010020019300020000000103550000006001100270000005220010019d0000052201100197000000000001004b00000f9d0000613d0000052c0010009c000000a50000213d0000001f03100039000005e2033001970000003f03300039000005e204300197000000400300043d0000000004430019000000000034004b000000000500003900000001050040390000052c0040009c000000a50000213d0000000100500190000000a50000c13d000000400040043f0000000005130436000005e2021001980000001f0310018f0000000001250019000000020400036700000f900000613d000000000604034f000000006706043c0000000005750436000000000015004b00000f5e0000c13d00000f900000013d000005220010009c00000522010080410000004001100210000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c700008009020000390000000005000019148214780000040f000500010020019300020000000103550000006001100270000005220010019d0000052201100197000000000001004b00000f9d0000613d0000052c0010009c000000a50000213d0000001f03100039000005e2033001970000003f03300039000005e204300197000000400300043d0000000004430019000000000034004b000000000500003900000001050040390000052c0040009c000000a50000213d0000000100500190000000a50000c13d000000400040043f0000000005130436000005e2021001980000001f0310018f0000000001250019000000020400036700000f900000613d000000000604034f000000006706043c0000000005750436000000000015004b00000f8c0000c13d000000000003004b00000f9d0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f0000000000210435000000400100043d0000000502000029000000000002004b000005c30000c13d00000044021000390000058b030000410000000000320435000000240210003900000010030000390000064b0000013d000005e50010009c00000fb10000213d000000230010008c00000fb10000a13d00000004010000390000000101100367000000000101043b000005290010009c00000fb10000213d000000000001042d00000000010000190000148400010430000005e50010009c00000fc30000213d000000630010008c00000fc30000a13d00000001030003670000000401300370000000000101043b000005290010009c00000fc30000213d0000002402300370000000000202043b000005290020009c00000fc30000213d0000004403300370000000000303043b000000000001042d0000000001000019000014840001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000002004b00000fd70000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00000fcd0000413d00000fd70000a13d000000000312001900000000000304350000001f02200039000005e2022001970000000001120019000000000001042d0000006002100039000005e60300004100000000003204350000004002100039000005e7030000410000000000320435000000200210003900000033030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d0005000000000002000200000003001d000100000002001d000005e8020000410000000000200443000300000001001d00000004001004430000000001000414000005220010009c0000052201008041000000c001100210000005a2011001c700008002020000391482147d0000040f00000001002001900000108c0000613d000000000101043b000000000001004b000010380000613d000005e801000041000000000010044300000003010000290000052901100197000300000001001d00000004001004430000000001000414000005220010009c0000052201008041000000c001100210000005a2011001c700008002020000391482147d0000040f00000001002001900000108c0000613d000000000101043b000000000001004b0000108a0000613d000000400a00043d0000006401a00039000000800700003900000000007104350000004401a0003900000001020000290000000000210435000005e90100004100000000001a0435000000000100041100000529011001970000000402a0003900000000001204350000002401a0003900000000000104350000008403a00039000000020100002900000000210104340000000000130435000000000001004b0000102e0000613d000000a403a00039000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b000010240000413d0000102e0000a13d0000000002310019000000000002043500000000040004140000000302000029000000040020008c000000200500008a0000103a0000c13d0000000004000415000000050440008a00000005044002100000000003000031000010710000013d0000000101000039000000000001042d000200000007001d0000001f01100039000000000151016f000000a401100039000005220010009c000005220100804100000060011002100000052200a0009c000005220300004100000000030a40190000004003300210000000000131019f000005220040009c0000052204008041000000c003400210000000000113019f00030000000a001d148214780000040f000000030a00002900000060031002700000052203300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000000046a00190000105c0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000010580000c13d000000000005004b000010690000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000004000415000000040440008a000000050440021000000001002001900000108d0000613d000000200500008a0000001f01300039000000000251016f0000000001a20019000000000021004b000000000200003900000001020040390000052c0010009c000010cb0000213d0000000100200190000010cb0000c13d000000400010043f000005e50030009c0000108a0000213d000000200030008c0000108a0000413d00000000010a0433000005dd001001980000108a0000c13d0000000502400270000000000201001f0000058801100197000005e90010009c00000000010000390000000101006039000000000001042d00000000010000190000148400010430000000000001042f000000000003004b000010910000c13d0000006002000039000010b80000013d0000001f0230003900000523022001970000003f02200039000005ea04200197000000400200043d0000000004420019000000000024004b000000000500003900000001050040390000052c0040009c000010cb0000213d0000000100500190000010cb0000c13d000000400040043f0000001f0430018f00000000063204360000052405300198000200000006001d0000000003560019000010ab0000613d000000000601034f0000000207000029000000006806043c0000000007870436000000000037004b000010a70000c13d000000000004004b000010b80000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000010d10000c13d000000400200043d000300000002001d00000535010000410000000000120435000000040120003914820fdb0000040f00000003020000290000000001210049000005220010009c00000522010080410000006001100210000005220020009c00000522020080410000004002200210000000000121019f00001484000104300000059f01000041000000000010043f0000004101000039000000040010043f000005a00100004100001484000104300000000202000029000005220020009c00000522020080410000004002200210000005220010009c00000522010080410000006001100210000000000121019f00001484000104300006000000000002000300000004001d000200000003001d000100000001001d000005e8010000410000000000100443000400000002001d00000004002004430000000001000414000005220010009c0000052201008041000000c001100210000005a2011001c700008002020000391482147d0000040f0000000100200190000011810000613d000000000101043b000000000001004b0000112d0000613d000005e801000041000000000010044300000004010000290000052901100197000400000001001d00000004001004430000000001000414000005220010009c0000052201008041000000c001100210000005a2011001c700008002020000391482147d0000040f0000000100200190000011810000613d000000000101043b000000000001004b0000117f0000613d000000400a00043d0000006401a00039000000800700003900000000007104350000004401a0003900000002020000290000000000210435000000010100002900000529011001970000002402a000390000000000120435000005e90100004100000000001a0435000000000100041100000529011001970000000402a0003900000000001204350000008403a00039000000030100002900000000210104340000000000130435000000000001004b000011230000613d000000a403a00039000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b000011190000413d000011230000a13d0000000002310019000000000002043500000000040004140000000402000029000000040020008c000000200500008a0000112f0000c13d0000000004000415000000060440008a00000005044002100000000003000031000011660000013d0000000101000039000000000001042d000300000007001d0000001f01100039000000000151016f000000a401100039000005220010009c000005220100804100000060011002100000052200a0009c000005220300004100000000030a40190000004003300210000000000131019f000005220040009c0000052204008041000000c003400210000000000113019f00040000000a001d148214780000040f000000040a00002900000060031002700000052203300197000000200030008c000000200400003900000000040340190000001f0540018f000000200640019000000000046a0019000011510000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b0000114d0000c13d000000000005004b0000115e0000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000000000003001f00020000000103550000000004000415000000050440008a00000005044002100000000100200190000011820000613d000000200500008a0000001f01300039000000000251016f0000000001a20019000000000021004b000000000200003900000001020040390000052c0010009c000011c00000213d0000000100200190000011c00000c13d000000400010043f000005e50030009c0000117f0000213d000000200030008c0000117f0000413d00000000010a0433000005dd001001980000117f0000c13d0000000502400270000000000201001f0000058801100197000005e90010009c00000000010000390000000101006039000000000001042d00000000010000190000148400010430000000000001042f000000000003004b000011860000c13d0000006002000039000011ad0000013d0000001f0230003900000523022001970000003f02200039000005ea04200197000000400200043d0000000004420019000000000024004b000000000500003900000001050040390000052c0040009c000011c00000213d0000000100500190000011c00000c13d000000400040043f0000001f0430018f00000000063204360000052405300198000300000006001d0000000003560019000011a00000613d000000000601034f0000000307000029000000006806043c0000000007870436000000000037004b0000119c0000c13d000000000004004b000011ad0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000011c60000c13d000000400200043d000400000002001d00000535010000410000000000120435000000040120003914820fdb0000040f00000004020000290000000001210049000005220010009c00000522010080410000006001100210000005220020009c00000522020080410000004002200210000000000121019f00001484000104300000059f01000041000000000010043f0000004101000039000000040010043f000005a00100004100001484000104300000000302000029000005220020009c00000522020080410000004002200210000005220010009c00000522010080410000006001100210000000000121019f00001484000104300000052901100198000011e10000613d000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000011f50000613d000000000101043b000000000101041a0000008001100270000000000001042d000000400100043d0000006402100039000005b70300004100000000003204350000004402100039000005b803000041000000000032043500000024021000390000003103000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c0000052201008041000000400110021000000539011001c70000148400010430000000000100001900001484000104300008000000000002000600000003001d000400000002001d000500000001001d000000400100043d000005eb0010009c000013790000813d0000004002100039000000400020043f0000002002100039000000000002043500000000000104350000000101000039000000000101041a000000060010006c000013800000a13d0000057801000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000005220010009c0000052201008041000000c00110021000000584011001c700008005020000391482147d0000040f00000001002001900000137f0000613d000000000101043b000000060110006b000700000000001d0000121e0000413d000700010010003e000013730000613d000000060010006c0000123f0000813d0000000602000029000800000002001d000000000020043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000400300043d000005250030009c000013790000213d000000000101043b0000004002300039000000400020043f000000000101041a00000529021001980000000004230436000000a0011002700000052c011001970000000000140435000012530000c13d0000000802000029000000000002004b000013730000613d000000010220008a000000070020006c0000121f0000813d000000400100043d0000006402100039000005db0300004100000000003204350000004402100039000005dc03000041000000000032043500000024021000390000002f03000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c0000052201008041000000400110021000000539011001c700001484000104300000000001000411000000000021004b0000000605000039000200000003001d000100000004001d000012930000613d0000000101000039000000000101041a0000000602000029000000000021004b0000139e0000a13d000000000020043f000000200050043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d00000002020000290000000002020433000000000101043b000000000101041a00000529011001970000000003000411000000000031004b000012920000613d0000052901200197000000000010043f0000000701000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000000101043b00000000020004110000052902200197000000000020043f000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000000101043b000000000101041a000000ff00100190000013a80000613d000000020100002900000000020104330000000605000039000005290220019700000005010000290000052901100197000000000012004b0000138a0000c13d000800000002001d0000000401000029000705290010019c0000000601000029000013940000613d000000000010043f000000200050043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000000101043b000000000201041a0000052802200197000000000021041b000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d020000390000000403000039000005d804000041000000080500002900000000060000190000000607000029148214780000040f00000008010000290000000100200190000013710000613d000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000000101043b000000000201041a0000058703200198000013730000613d000005f202200197000000010330008a000000000223019f000000000021041b0000000701000029000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000000101043b000000000201041a0000058703200197000005870030009c000013730000613d000005f2022001970000000103300039000000000223019f000000000021041b000000400200043d000005250020009c000013790000213d0000004001200039000000400010043f0000000701000029000300000002001d0000000001120436000800000001001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f00000001002001900000137f0000613d000000000101043b0000052c01100197000000080200002900000000001204350000000601000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000030200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000008030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b0000000601000029000000010110003a000013730000613d000800000001001d000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000000101043b000000000101041a00000529001001980000135d0000c13d0000000101000039000000000101041a000000080010006b0000135d0000813d000000400400043d000005250040009c0000000202000029000013790000213d0000000101000029000000000101043300000000020204330000004003400039000000400030043f0000052902200197000700000004001d00000000022404360000052c01100197000300000002001d00000000001204350000000801000029000000000010043f0000000401000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013710000613d000000070200002900000000020204330000052902200197000000000101043b000000000301041a0000058803300197000000000223019f00000003030000290000000003030433000000a0033002100000058903300197000000000232019f000000000021041b000000400100043d000005220010009c000005220100804100000040011002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f0000052a011001c70000800d0200003900000004030000390000058a04000041000000050500002900000004060000290000000607000029148214780000040f0000000100200190000013710000613d000000000001042d000000000100001900001484000104300000059f01000041000000000010043f0000001101000039000000040010043f000005a00100004100001484000104300000059f01000041000000000010043f0000004101000039000000040010043f000005a0010000410000148400010430000000000001042f000000400100043d0000006402100039000005a80300004100000000003204350000004402100039000005a703000041000000000032043500000024021000390000002a03000039000012480000013d000000400100043d0000006402100039000005f00300004100000000003204350000004402100039000005f103000041000000000032043500000024021000390000002603000039000012480000013d000000400100043d0000006402100039000005f30300004100000000003204350000004402100039000005f403000041000000000032043500000024021000390000002503000039000012480000013d000000400100043d0000006402100039000005ec0300004100000000003204350000004402100039000005ed03000041000000000032043500000024021000390000002d03000039000012480000013d000000400100043d0000006402100039000005ee0300004100000000003204350000004402100039000005ef03000041000000000032043500000024021000390000003203000039000012480000013d0000052901100198000013c40000613d000000000010043f0000000501000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000013d80000613d000000000101043b000000000101041a0000058701100197000000000001042d000000400100043d0000006402100039000005cf0300004100000000003204350000004402100039000005ce03000041000000000032043500000024021000390000002b03000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c0000052201008041000000400110021000000539011001c70000148400010430000000000100001900001484000104300000000102000039000000000202041a000000000012004b000013ee0000a13d000000000010043f0000000601000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000014020000613d000000000101043b000000000101041a0000052901100197000000000001042d000000400100043d0000006402100039000005ec0300004100000000003204350000004402100039000005ed03000041000000000032043500000024021000390000002d03000039000000000032043500000535020000410000000000210435000000040210003900000020030000390000000000320435000005220010009c0000052201008041000000400110021000000539011001c70000148400010430000000000100001900001484000104300001000000000002000100000001001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f00000001002001900000141e0000613d000000000301034f000005af01000041000000000203043b000000010220006c0000141d0000413d0000058e0100004100004faf0020008c0000141d0000213d0000ffff0120018f000004b00110011a000005b5011000d1000005b60110009a000000000001042d000000000001042f000100000000000200000000040100190000000001000019000000000004004b000014360000613d000000000002004b000014360000613d000100000003001d000005820100004100000000001004430000000001000414000005220010009c0000052201008041000000c00110021000000583011001c70000800b020000391482147d0000040f0000000100200190000014370000613d000000000101043b000000010010006c00000000010000390000000101008039000000000001042d000000000001042f0000052901100197000000000010043f0000000701000039000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000014470000613d000000000101043b000000000001042d000000000100001900001484000104300000052902200197000000000020043f000000200010043f0000000001000414000005220010009c0000052201008041000000c00110021000000585011001c700008010020000391482147d0000040f0000000100200190000014570000613d000000000101043b000000000001042d00000000010000190000148400010430000000000001042f00000000050100190000000000200443000000050030008c000014680000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000014600000413d000005220030009c000005220300804100000060013002100000000002000414000005220020009c0000052202008041000000c002200210000000000112019f000005f5011001c700000000020500191482147d0000040f0000000100200190000014770000613d000000000101043b000000000001042d000000000001042f0000147b002104210000000102000039000000000001042d0000000002000019000000000001042d00001480002104230000000102000039000000000001042d0000000002000019000000000001042d0000148200000432000014830001042e000014840001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffbf417a756b69000000000000000000000000000000000000000000000000000000415a554b49000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000ffffffffffffffffbfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a532405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acebfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a5313da8a5f161a6c3ff06a60736d0ed24d7963cc6a5c4fafd2fa1dae9bb908e07a5c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b3da8a5f161a6c3ff06a60736d0ed24d7963cc6a5c4fafd2fa1dae9bb908e07a400000002000000000000000000000000000001800000010000000000000000006c617267657220636f6c6c656374696f6e2073697a65206e656564656400000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000006e6f6e7a65726f00000000000000000000000000000000000000000000000000455243373231413a206d61782062617463682073697a65206d7573742062652000000000000000000000000000000000000000840000000000000000000000006e6f6e7a65726f20737570706c79000000000000000000000000000000000000455243373231413a20636f6c6c656374696f6e206d757374206861766520612000000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000ac44600100000000000000000000000000000000000000000000000000000000d7224b9f00000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f8a987d800000000000000000000000000000000000000000000000000000000fbe1aa5100000000000000000000000000000000000000000000000000000000d7224ba000000000000000000000000000000000000000000000000000000000dc33e68100000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000c87b56dc00000000000000000000000000000000000000000000000000000000c87b56dd00000000000000000000000000000000000000000000000000000000caf8a6d100000000000000000000000000000000000000000000000000000000cb91d8b300000000000000000000000000000000000000000000000000000000ac44600200000000000000000000000000000000000000000000000000000000b05863d500000000000000000000000000000000000000000000000000000000b88d4fde0000000000000000000000000000000000000000000000000000000090aa0b0e0000000000000000000000000000000000000000000000000000000095d89b400000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a22cb46500000000000000000000000000000000000000000000000000000000a7cd52cb0000000000000000000000000000000000000000000000000000000090aa0b0f00000000000000000000000000000000000000000000000000000000917d009e000000000000000000000000000000000000000000000000000000009231ab2a000000000000000000000000000000000000000000000000000000008bc35c2e000000000000000000000000000000000000000000000000000000008bc35c2f000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000009002808300000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000007a1c4a5600000000000000000000000000000000000000000000000000000000422030b9000000000000000000000000000000000000000000000000000000005666c87f000000000000000000000000000000000000000000000000000000006352211d000000000000000000000000000000000000000000000000000000006352211e000000000000000000000000000000000000000000000000000000006ebc56010000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005666c8800000000000000000000000000000000000000000000000000000000059f369fe000000000000000000000000000000000000000000000000000000005cae01d3000000000000000000000000000000000000000000000000000000004d3554c2000000000000000000000000000000000000000000000000000000004d3554c3000000000000000000000000000000000000000000000000000000004f6ccce70000000000000000000000000000000000000000000000000000000055f804b300000000000000000000000000000000000000000000000000000000422030ba0000000000000000000000000000000000000000000000000000000042842e0e0000000000000000000000000000000000000000000000000000000018160ddc000000000000000000000000000000000000000000000000000000002f745c58000000000000000000000000000000000000000000000000000000002f745c5900000000000000000000000000000000000000000000000000000000375a069a0000000000000000000000000000000000000000000000000000000041fbddbd0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000002d20fb6000000000000000000000000000000000000000000000000000000000081812fb00000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000016e6e15a0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde03310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e000000000000000000000000000000000000002000000080000000000000000002000000000000000000000000000000000000000000008000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000002000000000000000000000000063616c6c6564207769746820696e636f7272656374207075626c69632073616c65206b65790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000001200000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000002000002000000000000000000000000000000440000000000000000000000000200000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e73666572206661696c65642e0000000000000000000000000000000063616e206e6f74206d696e742074686973206d616e79000000000000000000007075626c69632073616c6520686173206e6f7420626567756e207965740000000000000000000000000000000000000000000000000000000214e8348c4f00004552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e0000000000000000000000000000000000df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7000000000000000000000000000000000000000000000000ffffffffffffff21ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000080000000000000000000000000000000000000000000000000fffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000000000000000000000000000000000ffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080000000000000000000000000000000000000000000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657273206c656e67746800000000000000000000000000000000000000000000000061646472657373657320646f6573206e6f74206d61746368206e756d536c6f744e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f390200000200000000000000000000000000000024000000000000000000000000020000000000000000000000000000000000002000000000000000000000000017307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31455243373231413a20617070726f766520746f2063616c6c65720000000000000000000000000000000000000000000000000064000000800000000000000000455243373231413a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000084000001000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000080000000000000000000000000ffffffff000000000000000000000000000000000000000000000000ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000de0b6b3a7640000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000b1a2bc2ec50000209699368efae3c2ab13a6e9d9f9aceb6c5aebfb5ffd7bd0a9ff6281a30b5739455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756e64730000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff4e5d43d13b0000fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000020746865207a65726f2061646472657373000000000000000000000000000000455243373231413a206e756d626572206d696e74656420717565727920666f727420616d6f756e74000000000000000000000000000000000000000000000000722061756374696f6e20746f20737570706f72742064657369726564206d696e6e6f7420656e6f7567682072656d61696e696e6720726573657276656420666f00000000000000000000000000000000000000a400000000000000000000000073616c6520686173206e6f74207374617274656420796574000000000000000072656163686564206d617820737570706c7900000000000000000000000000004e65656420746f2073656e64206d6f7265204554482e000000000000000000007300000000000000000000000000000000000000000000000000000000000000455243373231413a206d696e7420746f20746865207a65726f206164647265736e6f7420656c696769626c6520666f7220616c6c6f776c697374206d696e7400616c6c6f776c6973742073616c6520686173206e6f7420626567756e207965746d6178426174636853697a65000000000000000000000000000000000000000063616e206f6e6c79206d696e742061206d756c7469706c65206f6620746865206768000000000000000000000000000000000000000000000000000000000000455243373231413a207175616e7469747920746f206d696e7420746f6f2068696576206d696e7400000000000000000000000000000000000000000000000000746f6f206d616e7920616c7265616479206d696e746564206265666f726520646473000000000000000000000000000000000000000000000000000000000000455243373231413a206f776e657220696e646578206f7574206f6620626f756e6f776e657220627920696e646578000000000000000000000000000000000000455243373231413a20756e61626c6520746f2067657420746f6b656e206f6620455243373231413a2062616c616e636520717565727920666f7220746865207a65726f20616464726573730000000000000000000000000000000000000000006c65616e757000000000000000000000000000000000000000000000000000006e6f7420656e6f756768206d696e7465642079657420666f72207468697320637175616e74697479206d757374206265206e6f6e7a65726f00000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c0000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000084000000c00000000000000000776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000455243373231413a20617070726f76652063616c6c6572206973206e6f74206f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256572000000000000000000000000000000000000000000000000000000000000455243373231413a20617070726f76616c20746f2063757272656e74206f776e206f776e6572206f6620746f6b656e0000000000000000000000000000000000455243373231413a20756e61626c6520746f2064657465726d696e652074686500000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b5e139f0000000000000000000000000000000000000000000000000000000080ac58cd00000000000000000000000000000000000000000000000000000000780e9d630000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6563656976657220696d706c656d656e74657200000000000000000000000000455243373231413a207472616e7366657220746f206e6f6e20455243373231521806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83150b7a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffc078697374656e7420746f6b656e00000000000000000000000000000000000000455243373231413a20617070726f76656420717565727920666f72206e6f6e656f776e6572206e6f7220617070726f7665640000000000000000000000000000455243373231413a207472616e736665722063616c6c6572206973206e6f7420206f776e65720000000000000000000000000000000000000000000000000000455243373231413a207472616e736665722066726f6d20696e636f7272656374ffffffffffffffffffffffffffffffff000000000000000000000000000000006472657373000000000000000000000000000000000000000000000000000000455243373231413a207472616e7366657220746f20746865207a65726f20616402000002000000000000000000000000000000000000000000000000000000001aafeaa64efcdccbf0b3ba7b9d6ab6dc8c2d3aefa68f793e26d0f19e37c497b0
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000022c400000000000000000000000000000000000000000000000000000000000000c8
-----Decoded View---------------
Arg [0] : maxBatchSize_ (uint256): 5
Arg [1] : collectionSize_ (uint256): 10000
Arg [2] : amountForAuctionAndDev_ (uint256): 8900
Arg [3] : amountForDevs_ (uint256): 200
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [1] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [2] : 00000000000000000000000000000000000000000000000000000000000022c4
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.